鸿蒙Next华为一键登录demo如何实现

我在尝试实现鸿蒙Next的华为一键登录功能,按照官方demo操作时遇到几个问题:1)如何正确配置agconnect-services.json文件?2)调用HuaweiIdAuthManager.getService()时总是返回null,可能是什么原因?3)UI授权界面无法正常弹出,需要检查哪些权限设置?有没有完整的代码示例可以参考?

2 回复

鸿蒙Next一键登录?简单!

  1. 调用AuthClient发起授权请求。
  2. 用户点确认,系统自动回传token
  3. token换用户信息,搞定!
    代码别忘加权限:ohos.permission.APP_ACCOUNT_MANAGER
    (注意:别在真机测试时手滑点成“拒绝”,否则只能含泪重装demo了😏)

更多关于鸿蒙Next华为一键登录demo如何实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next(HarmonyOS NEXT)中实现华为一键登录功能,可通过华为提供的Account Kit快速完成。以下是基于HarmonyOS SDK的实现步骤和示例代码:

实现步骤

  1. 配置开发环境

    • 在AppGallery Connect中创建项目,启用华为帐号服务,并配置应用签名证书指纹。
    • 在项目的module.json5文件中添加权限和abilities配置。
  2. 导入依赖
    build-profile.json5dependencies中添加:

    "dependencies": {
      "@hw-account/account-kit": "^x.x.x" // 使用最新版本
    }
    
  3. 前端代码实现

    • 初始化AccountAuthService,调用一键登录接口。

示例代码

import { accountAuthService } from '@hw-account/account-kit';
import { BusinessError } from '@kit.BasicServicesKit';

// 1. 初始化服务
const authService = accountAuthService.getAccountAuthService(this.context);

// 2. 调用一键登录
async function oneClickLogin() {
  try {
    const authParams = {
      scope: 'openid', // 根据需求设置scope
    };
    const result = await authService.authorize(authParams);
    console.info('Login success, token: ' + result.accessToken);
    // 处理登录成功逻辑(如获取用户信息)
  } catch (error) {
    const err: BusinessError = error as BusinessError;
    console.error('Login failed, error code: ' + err.code);
  }
}

// 3. 在UI中绑定按钮触发
// 例如:在Button的onClick事件中调用oneClickLogin()

注意事项

  • 权限声明:在module.json5中添加以下权限:
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
    
  • 回调处理:登录成功后需通过accessToken向华为服务器请求用户信息(需后端配合)。
  • 兼容性:确保设备已登录华为帐号且网络正常。

总结

通过Account Kit的authorize方法,结合AGC配置,可快速实现一键登录。若需完整用户信息,需通过accessToken调用REST API(需服务端处理敏感数据)。

回到顶部