华为帐号服务(帐号服务)为开发者提供简单安全的登录授权功能。快速登录应用程序并立即使用该应用程序。本文收集了开发者在集成华为帐号服务时遇到的典型问题,并给出了解决方案,希望能为其他遇到类似问题的开发者提供参考。一、什么是redirect_url以及如何配置回调地址(1)回调地址redirect_rul不需要是真实的页面地址。redirect_rul是OAuth2.0协议定义的一个虚拟地址,用于以下目的。用户配置一个https://xxxx类似的自定义字符串就好了。(最好根据自己的业务属性定义一个有意义的字符串)(2)OAuth2.0协议中redirect_url的作用如下:如果是web应用,OAuth服务器授权后,会回调并跳转到这个地址。Web应用程序需要拦截此回调地址以接收AuthCode。获取AT时,需要将回调地址作为参数传回,OAuth服务器会验证回调地址是否与code匹配,否则返回错误码。(3)如何设置redirect_url?参考官网??文档说明2、openId和unionId有什么区别?openId:同一个用户,不同应用,openId值不同,在单个应用内唯一。unionId:开发者账号ID,同一个用户,同一个开发者账号下管理的不同应用,具有相同的unionId。OpenId可以通过使用华为帐号登录应用获取(同一用户的不同应用有不同的OpenId值),OpenId用于标识用户。多个应用中的同一个华为帐号用户在开发者系统中会被识别为多个用户。.如果开发者想在多个应用中唯一标识用户,可以使用UnionId(对于同一个用户,同一开发者账号下管理的不同应用具有相同的UnionId值)。特别是标识用户唯一性的应用必须在同一个开发者账号下管理。一个应用程序转移到另一个帐户后,UnionId值也会发生变化。3、如何判断账号是否已经登录?通过silentSignIn接口,调用onSuccess,获取到的authAccount不为空,说明回调成功,账号登录。任务task=service.silentSignIn();task.addOnSuccessListener(newOnSuccessListener(){@OverridepublicvoidonSuccess(AuthAccountauthAccount){if(null!=authAccount){showLog("成功");}}});4、调用服务端user.getTokenInfo接口,报无效session(1)检查传递的参数是否正确(2)access_token需要UrlEncoded,否则如果里面有特殊符号会报无效session。接口文档:https://developer.huawei.com/...5.调用oauth2/v3/token接口,是否必须传递redirect_uri(1)使用AuthorizationCode换取Access_Token、RefreshToken、IDToken,必须传入此参数(2)使用RefreshToken获取新的AccessToken,redirect_url不需要上传。参考官网??文档6.AuthorizationCode、AccessToken、RefreshToken的有效期是多久?授权码的有效期为5分钟。密码是一次性的,申请后使用一次即失效。AccessToken有效期为1小时。RefreshTokenToken目前默认有效期为180天。七、常见错误码分析7.1错误码:907135700该错误码表示调用网关查询应用范围失败,可以检查以下几项:1、检查设备网络是否有问题。一般是当前网络不可用或者当前网络不能正常访问范围下载站点,比如防火墙限制。2、查看你的appId是否在开发者联盟上注册过3、可能是手机时间不对,误认为SSL证书过期,导致scope无法下载,认证失败。7.2错误码:907135701该错误码表示openGW没有配置scope,appid没有应用权限,或者环境和appid不匹配,可以检查以下几项:1.检查你的appId是否已经注册到开发者联盟2、检查agconnect-services.json文件中的app_id是否与AGC平台上的appid一致;3.检查agconnect-services.json文件是否在项目的app目录下。agconnect-services.json文件必须在app目录下,如下图:4.检查appId和HMSspk环境是否匹配,同样是商业环境还是测试环境7.3错误码:907135702这个错误码表示openGW没有配置指纹证书。请在开发者联盟上配置指纹证书,可以检查以下几点:1、检查你的appId是否在开发者联盟上注册过2、联盟上是否配置了SHA256指纹,可以参考官网document7.4错误码:6003这个错误码表示证书指纹验证不匹配。您需要检查当前客户端应用打包的证书签名是否与AppGalleryConnect网站上配置的签名一致。1、打开应用的APK,解压“META-INF”文件夹,在里面获取“CERT.RSA”文件,通过keytool-printcert-fileMETA-INF/CERT.RSA命令打印签名证书信息.2、登录AppGalleryConnect,点击“我的项目”,选择要操作的项目,进入项目页面选择应用,查看“SHA256证书指纹”中配置的信息是否与步骤中的指纹一致1)在“项目设置>常规”中。证书配置详见官网文档>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee关注我们,第一时间了解最新HMSCore的技术资料~