HarmonyOS鸿蒙Next中关于华为认证服务-华为账号登录的几个问题

HarmonyOS鸿蒙Next中关于华为认证服务-华为账号登录的几个问题 在agc创建了一个项目,新增了一个鸿蒙app,api(20),系统会分配ClientID和Client Scecrete,如下图所示

cke_2585.png

开通agc云开发的认证服务中的华为账号认证服务,录入ClientID和Client Scecrete,如下图所示

cke_18305.png

后续调用auth.SignIn,成功创建了客户并返回客户信息。

但是后续问题是

1、如果我再增加一个app,系统也会为该app分配ClientID和Client Scecret,那我在华为账号认证服务里,到底录入哪个app的 ClientID和Client Scecet呢?如果录入的是第一个的,则第一个app能正常登录,第二个就会报,“code”:203818037,“message”:"[AppGalleryConnectThirdAuthService]reset access token fail invalid authCode的错误。

2、如果我选择在sdk配置文件里选择不包含密钥,如下图所示

cke_73075.png

在初始化的时候,再传递,如下图所示,

cke_85023.png

则调用登录时,报如下错误:

{“code”:401,“message”:"{“ret”:{“code”:205524993,“msg”:“client token auth failed”}}"}

有没有高人能指点迷津?


更多关于HarmonyOS鸿蒙Next中关于华为认证服务-华为账号登录的几个问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

HarmonyOS Next中,华为认证服务(HUAWEI ID Kit)支持华为账号登录。该服务提供OAuth 2.0授权流程,包括静默登录与授权登录两种模式。开发者需在AppGallery Connect配置应用签名证书指纹,并在工程中集成Account SDK。登录成功后,可获取用户的基本公开信息。该服务独立运行,不依赖Java或C语言环境。

更多关于HarmonyOS鸿蒙Next中关于华为认证服务-华为账号登录的几个问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对您提出的两个问题,核心在于理解AGC项目中App、认证服务配置与SDK初始化之间的关系。

问题1:多个App的ClientID和Client Secret如何配置?

在您的AGC项目中,每个HarmonyOS App(对应不同的Bundle Name或Package Name)都会自动生成唯一的ClientID和Client Secret。华为账号认证服务是为整个项目开通的,但需要为项目中每个需要登录功能的App单独配置其对应的ClientID和Client Secret

  • 正确操作:在“华为账号认证服务”的配置页面,您需要将第二个App的ClientID和Client Secret也录入进去。通常,这里支持添加多个客户端配置。请确保每个App在调用登录时,使用的是自己在AGC中分配的那套凭证。
  • 错误原因:第二个App登录报错 203818037 (invalid authCode),正是因为认证服务端收到的请求来自第二个App的ClientID,但您只配置了第一个App的凭证,服务端无法识别第二个App的身份,导致认证链断裂。

问题2:SDK不包含密钥并通过代码初始化时为何报错 205524993 (client token auth failed)?

这个错误表明SDK初始化时提供的ClientID或Client Secret与服务端记录不匹配,或者初始化过程本身有问题。

  • 关键检查点
    1. 凭证匹配:请确保 AGConnectAuthConfig.fromBuilder() 中设置的 clientIdclientSecret 与您在AGC控制台为该App配置的完全一致,包括大小写。图中代码的 clientIdclientSecret 应是来自您第一个App的配置。
    2. 初始化时机AGConnectAuth.initialize() 必须在Ability启动的早期(如 onCreate())调用,且必须先于任何认证API的调用
    3. 配置对象作用域:确保用于初始化的 AGConnectAuthConfig 配置对象是有效的,并且其包含的凭证在运行时正确传递。

总结与直接操作建议

  1. 对于多App:在AGC的“华为账号认证服务”配置中,录入所有需要登录功能的App各自的ClientID和Client Secret。
  2. 对于SDK初始化
    • 若选择“不包含密钥”,则必须通过代码精确初始化。
    • 核对代码中的 clientIdclientSecret 值与AGC控制台中对应App的配置绝对一致
    • 确认初始化代码在应用生命周期中足够早执行。

完成以上核对和配置后,两个App应能分别使用自己的凭证正常登录。第一个问题的解决(补录第二个App的凭证)很可能直接解决了第二个App的登录报错。而第二个问题的报错,重点在于检查代码初始化时的凭证是否与云端为该App配置的凭证精确匹配。

回到顶部