华为帐号服务(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. vscodeC++生成配置文件

    参考 https://www.cnblogs.com/harrypotterisdead/p/14207866.html 和 https://www.cnblogs.com/heyiping/p/14 ...

  2. Netty笔记(3) - 核心组件

    各组件关系示意图: Bootstrap 和 ServerBootstrap 说明: Bootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Ne ...

  3. Java 小练习 创建类 + 调用(1)

    1 package com.bytezero.exer; 2 3 /** 4 * 5 * @Description 6 * @author Bytezero·zhenglei! Email:42049 ...

  4. 3、zookeeper在java使用的API

    引入maven包 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient< ...

  5. linux压缩文件并排除指定目录

    今天要在linux上打包一个项目另作他用,但是项目图片都是放本地服务器的,整个项目打包好后有2G多下载十分费时.项目中的图片我们可以不要,所以压缩的时候要排除图片目录. 具体命令如下: // 参数说明 ...

  6. git commit大文件后无法删除或撤回

    可以使用版本回退的功能 先用git log 查看历史提交 用 git reset --soft 上面的编号 回退到历史提交的版本 再重新commit即可

  7. IDE中使用Git提交代码报错:Push to origin/release-V2 was rejected

    一.问题由来 当前项目开发好之后,已经正常稳定运行一两个月,在使用过程中基本上没在出现什么BUG.因此公司在讨论准备开发二期项目,自己 就在之前的基础之上,使用git创建了分支,一个分支release ...

  8. 开发环境篇之HALCON数据结构

    开发环境篇之HALCON基础 目录 基本数据分类 图标类数据 Image(图片) Pixel:像素 Channel:通道 Domain:域 图片操作 Region(区域) Region操作 XLD(轮 ...

  9. stm32芯片的SPI接口调试总结之轮询模式

    一 概念 1 组成 SPI系统可直接与各个厂家生产的多种标准外围器件接口,它只需4条线:串行时钟线(SCK).主机输入/从机输出数据线(MISO).主机输出/从机输入数据线(MOSI)和低电平有效的从 ...

  10. 记本地新建一个gradle方式springboot项目过程

    打算使用gradle在idea新建个springboot项目,然后坑很多,记录一下 原来我的idea应该是社区版,新建项目时候没有可以选择spring相关配置,然后卸载了重装,之前问题是启动是启动起来 ...