华为帐号服务(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/consumer/cn/doc/development/HMSCore-References/account-gettokeninfo-0000001050050585

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)的指纹一致。

证书配置可以参考官网文档

了解更多详情>>

访问华为开发者联盟官网

获取开发指导文档

华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

【FAQ】接入华为帐号服务过程中常见问题总结的更多相关文章

  1. 【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法

    很多开发者在接入华为帐号服务时,经常会出现907135701的报错.根据官网文档说明,错误码907135701表示: 这个错误码在安卓和鸿蒙上都会出现,导致该报错的原因有很多,开发者可以按照下面几点进 ...

  2. 【FAQ】接入HMS Core地图服务过程中常见问题总结

    HMS Core地图服务(Map Kit)给开发者提供一套地图开发调用的SDK,助力全球开发者实现个性化地图呈现与交互,方便轻松地在应用中集成地图相关的功能,全方位提升用户体验. 在日常工作中,我们会 ...

  3. 【接入指南】一个Demo带你玩转华为帐号服务

    在<接入指南:一文带你了解华为帐号服务>中已经给大家介绍了华为帐号服务有哪些优势,如一键授权登录华为全场景共享.共享华为帐号所有用户资源.帐号安全可靠.接入方便快捷等,以及为什么能帮助开发 ...

  4. 【FAQ】在华为鸿蒙车机上集成华为帐号的常见问题总结

    随着新一代信息技术与汽车产业的深度融合,智能网联汽车正逐渐成为汽车产业发展的战略制高点,无论是传统车企还是新势力都瞄准了"智能座舱"这种新一代人机交互方式.面对竞争如此激烈的车机市 ...

  5. 【FAQ】干货满满,接入HMS Core应用内支付服务过程中一些常见问题总结(2)来啦

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档 上次,我们分享和总 ...

  6. 接入HMS Core应用内支付服务过程中一些常见问题总结

    华为HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档. 往期文章:常 ...

  7. 【FAQ】运动健康服务REST API接口使用过程中常见问题和解决方法总结

    华为运动健康服务(HUAWEI Health Kit)为三方生态应用提供了REST API接口,通过其接口可访问数据库,为用户提供运动健康类数据服务.在实际的集成过程中,开发者们可能会遇到各种问题,这 ...

  8. 【FAQ】申请运动健康服务验证环节常见问题及解答

    华为 HMS Core 运动健康服务(HUAWEI Health Kit)提供原子化数据开放.应用在获取用户数据授权后,可通过接口访问运动健康数据,对用户数据进行读写等操作,为用户提供运动健康类数据服 ...

  9. (转)CloudStack 安装及使用过程中常见问题汇总

    CloudStack 安装及使用过程中常见问题汇总             在做工程项目中对CloudStack 安装及使用过程中常见的几个问题及如何解决做一个总结.   1.Windows XP虚拟 ...

  10. 【FAQ】接入HMS Core推送服务过程中一些常见问题总结

    HMS Core 推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道.开发者通过集成推送服务,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活 ...

随机推荐

  1. com.fasterxml.jackson.databind.exc.InvalidDefinitionException

    @JsonIgnoreProperties 此注解是类注解,作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响. 写法将此标签加在model 类的类名上 ,可以多个 ...

  2. 【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com

    问题描述 在App Service for Linux环境中,部署PHP应用,使用Nginx服务器.因为PHP应用中所有静态资源的URL使用的默认域名为 https://example.com:808 ...

  3. nftables语法及例子

    先上我自己实际测试通过的例子,用例子便于在实践中学习: # 0 --- 说明 ---下面例子中的单引号目的是为了避免nftable参数中的星号.花括号.分号等符号被shell展开解释掉了,导致nft命 ...

  4. Windows NFS 真弱 → 中文乱码导致文件找不到

    开心一刻 正睡着觉,然后来了个电话 对方说:你好,方便面是吗 我愣了一下,以为是恶作剧 回了句:我不是,我是火腿肠! 就挂了电话 又躺了好一会,忽然琢磨过来...... 不对呀,她好像说的是:你好,方 ...

  5. Python 中read()、 readline() 、readlines()三者之间的区别?

    read()方法用于一次性读取整个文件的内容,并将其作为一个字符串返回. readline()方法用于逐行读取文件的内容.每次调用readline()方法,它会读取文件的下一行,并将其作为一个字符串返 ...

  6. 基于centos7 创建一个jdk8的镜像

    前言: 直接使用docker拉取jdk8镜像因有时区问题,设置后也不生效,所以干脆自己做一个 以下是Dockerfile文件 FROM centos:7 RUN ln -snf /usr/share/ ...

  7. .NET集成DeveloperSharp实现数据分页

    数据分页,几乎是任何应用系统的必备功能.但当数据量较大时,分页操作的效率就会变得很低.大数据量分页时,一个操作耗时5秒.10秒.甚至更长时间都是有可能的,但这在用户使用的角度是不可接受的-- 数据分页 ...

  8. golang开发_goroutine在项目中的使用姿势

    很多初级的Gopher在学习了goroutine之后,在项目中其实使用率不高,尤其一些跨语言过来的人,对并发编程理解不深入,可能很多人只知道go func(),或者掌控不够,谨慎一些,尽量少使用或者不 ...

  9. 被 两个 vetur 玩惨了的几天,可不是vue-helper的锅

    最近由idea 转 vscode,因为 由原来一个项目变成7个项目了,2G内存不够看. 然后发现点击组件跳转不好使,装个vue-helper也是有一部分不好使. 下载vue-helper源码一通查,发 ...

  10. 谈谈Android中的消息提示那些坑

    Android中的消息提示无非就那几种,弹个窗(Toast或SnackBar),或者是弹出个对话框(Dialog),最近在使用的时候也是遇到了问题,有时候导致APP闪退 稍微研究会,总结了一下使用过程 ...