草庐IT

【FAQ】接入华为帐号服务过程中常见问题总结

HMS Core 2023-03-28 原文

华为帐号服务(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. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  6. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  7. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  8. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  9. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  10. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

随机推荐