# 华为账号登录接入指南

本文档介绍了如何在小程序 SDK 中接入并调用华为账号登录功能。

# 1. 准备工作

在调用登录接口之前,请确保你已在华为开发者联盟完成了相关应用的配置:

  1. 注册与认证:前往 华为开发者联盟 注册开发者账号并完成实名认证。
  2. 创建应用:在 AppGallery Connect 中创建你的 HarmonyOS 应用,并完善应用基本信息。
  3. 开启服务:在应用的 API 管理中,确保已开启 "华为账号 (Huawei ID)" 服务权限。
  4. 获取凭证:在应用信息页面,获取你的 Client ID(客户端 ID)和 Client Secret(客户端密钥)。

    ⚠️ 安全提示Client Secret 是应用的重要安全凭证,严禁硬编码在客户端代码中,必须保存在你的服务端。

# 2. 控制台配置账号

按照上述步骤 1 准备账号后前往微信开发者平台进行账号配置:

  1. 前往多端应用控制台:前往 微信开发者平台 并前往多端应用控制台。
  2. 开通身份管理:如果已开通,则此步骤可跳过。
  3. 配置华为登录:参考下图,点击「管理」进入华为登录配置页,将 Client ID 与 Client Secret 配置并保存即可。

# 3. 接口说明

接口名称wx.miniapp.ohosLogin

功能描述: 调起 HarmonyOS 系统的华为账号授权登录界面。用户授权成功后,接口会返回身份管理系统生成的临时登录凭证 code,开发者需将此 code 发送至自己的服务端,由服务端结合 Client IDClient Secret 向身份管理服务器请求换取用户的 Access Token 及基本信息。

# 4. 调用示例

请确保你的项目已接入支持该接口的最新版 SDK,然后在需要触发登录的地方调用以下代码:

wx.miniapp.ohosLogin({
  success: (res) => {
    console.log('华为登录成功', res);
    
    // res.code 为身份管理系统返回的临时登录凭证
    const authCode = res.code;
    
    // TODO: 将 authCode 发送到你的服务端
    // wx.request({
    //   url: 'https://your-backend-server.com/api/login/huawei',
    //   method: 'POST',
    //   data: { code: authCode },
    //   success: (serverRes) => { ... }
    // });
  },
  fail: (err) => {
    // 登录失败或用户取消授权
    console.error('华为登录失败', err);
    // err.errno: 错误码
    // err.errMsg: 错误信息描述
  }
});

# 5. 请求参数说明

默认情况可不传参数,则可满足获取华为个人基本信息(profile)的情况。如有需求可通过下面参数 scopes: string[] 默认值 ['profile'] 枚举值 profile, openid, phone permissions: string[] 默认值['serviceauthcode'], forceAuthorization: boolean 默认值 true

字段名 类型 说明
scopes String[] scope 列表,用于获取用户数据。默认值是 ['profile']。scope 取值范围:profile:华为账号用户的基本信息,如昵称头像等(元服务不支持该 scope)。openid:华为账号用户的 OpenID、UnionID。phone:华为账号快速验证手机号。(元服务不能直接调用该接口获取手机号,可参考场景化控件快速验证手机号获取)。quickLoginAnonymousPhone:获取华为账号绑定的匿名手机号(该 scope 只能与 openid 同时使用)
permissions String[] permission 列表,目前只支持 serviceauthcode。默认值是 ['serviceauthcode']
forceAuthorization boolean 用户是否需要登录授权,默认值是 true。如果该值为 true 且用户未登录或未授权,则会拉起用户登录或授权页面

# 6. 返回参数说明

success 回调中,res 对象包含以下关键字段:

字段名 类型 说明
code String 身份管理系统返回的临时登录凭证。

# 7. 服务端接入流程简述

客户端成功获取 code 并传给服务端后,服务端需要完成以下步骤:

  1. 服务端携带 Client IDClient Secret 以及接收到的 code,向身份管理服务器发起请求。
  2. 获取到 code 之后需要调用 code2verifyinfo 获取信息

详细的服务端接口调用规范,请参考华为官方文档:华为账号服务 - 服务端开发指南