华为帐号服务(Account Kit)为开发者提供简略、平安的登录受权性能,用户不用输出帐号、明码和繁琐验证,就能够通过华为帐号疾速登录利用,即刻应用App。这篇文章收集了开发者们集成华为帐号服务中会遇到的典型问题,并给出了解决办法,心愿为其余遇到相似问题的开发者提供参考。

1 .redirect_url是什么,如何配置回调地址

(1)回调地址redirect_rul不须要是实在的页面地址,redirect_rul是OAuth2.0协定定义的一个用来做以下用处的虚拟地址,用户配置一个https://xxxx相似的自定义字符串就好了。
(最好依据本人业务属性定义一个有意义的字符串)

(2)在OAuth2.0协定中redirect_url的用处如下:

如果是web利用,OAuth服务器受权后,会回调跳转到这个地址。web利用须要拦挡这个回调地址来接管Auth Code。获取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<AuthAccount> task = service.silentSignIn();        task.addOnSuccessListener(new OnSuccessListener<AuthAccount>() {            @Override            public void onSuccess(AuthAccount authAccount) {                if(null != authAccount) {                    showLog("success ");                }            }        });

4 .调用服务端接口user.getTokenInfo接口报错invalid session

(1)排查传参是否正确

(2)access_token须要UrlEncode一下,不然外面有特殊符号的解析就会报invalid session

接口文档:

https://developer.huawei.com/...

5 .调用oauth2/v3/token接口,redirect_uri是否必传

(1)应用Authorization Code换取Access_Token、Refresh Token、ID Token,这个参数是必须要传入的

(2)应用Refresh Token获取新的Access Token,redirect_url不须要传

参考官网文档

6. Authorization Code 、Access Token、Refresh Token的有效期别离是多久?

Authorization Code的有效期是5分钟,该code是一次性的,申请后应用一次之后就会生效。

Access Token的有效期是1小时。

Refresh Token Token以后默认有效期180天。

7. 常见错误码剖析

7.1 错误码:907135700

该错误码阐明调用网关查问利用scope失败,能够排查上面几项:

1.排查设施网络是否有问题,个别是以后网络不可用或者以后网络无奈失常拜访scope下载站点,比方防火墙限度等。

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和HMS spk环境是否匹配,同是商用环境或者测试环境

7.3 错误码:907135702

该错误码阐明openGW没有配置指纹证书,请在开发者联盟上配置指纹证书,能够排查以下几点:

1.查看本人的appId是否在开发者联盟下面曾经注册

2.SHA256指纹是否在联盟上配置,能够参考官网文档

7.4 错误码:6003

该错误码阐明证书指纹校验不匹配,须要查看以后客户端利用打包的证书签名是否与AppGallery Connect网站上配置的签名统一。

1.关上利用的APK,将其中“META-INF”文件夹解压进去,失去其中的“CERT.RSA”文件,通过keytool -printcert -file META-INF/CERT.RSA命令打印签名证书信息。

2.登录AppGallery Connect,单击“我的我的项目”,抉择须要操作我的项目,进入我的项目页面后抉择利用,而后在“我的项目设置 >惯例”中查看“SHA256证书指纹”配置的信息是否与步骤1)的指纹统一。

证书配置能够参考官网文档

理解更多详情>>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~