• 【华为账号服务】【FAQ】Account Kit常见咨询合集--获取帐号个人信息相关问题


     1、Access Token和Refresh Token最长会有多长?

    Access Token和Refresh Token的长度与其中编码的信息有关,目前来讲Access Token和Refresh Token的长度不会超过1024字符。

    2、调用获取Access Token的接口时,是否有次数和频率限制?

    单个App在一小时内最多允许10000次调用,超过限制将获取Token失败。

    3、为什么帐号中存在Email信息,但是服务端调用/oauth2/v3/tokeninfo接口后在响应中却没有Email信息?

    问题描述

    集成Account Kit,获取ID Token,调用服务侧的/oauth2/v3/tokeninfo接口后,发现不能在响应体中获取响应字段的Email信息。

    得到的响应如下:

    1. {
    2. "at_hash": "XXXXXX",
    3. "aud": "XXXXXX",
    4. "sub": "XXXXXX",
    5. "azp": "XXXXXX",
    6. "kid": "XXXXXX",
    7. "iss": "https://accounts.huawei.com",
    8. "typ": "JWT",
    9. "exp": 1579682457,
    10. "display_name": "136******53",
    11. "iat": XXXXXX,
    12. "alg": "RS256"
    13. }

    接口指导中的响应如下所示:

    1. {
    2. "iss":"String",
    3. "sub":"String",
    4. "aud":"String",
    5. "exp":"Long",
    6. "iat":"Long",
    7. "nonce":"String",
    8. "at_hash":"String",
    9. "azp":"String",
    10. "email_verified":"Boolean",
    11. "email":"String",
    12. "picture":"String",
    13. "name":"String",
    14. "locale":"String",
    15. "family_name":"String",
    16. "given_name":"String",
    17. "display_name":"String"
    18. }

    可能原因

    在获取ID Token前,未请求华为帐号用户授权应用获取Email地址。

    处理步骤

    在端侧的代码中提前添加请求华为帐号用户授权应用获取Email地址的操作。

    3.0版本的授权请求接口为requestEmail();4.0版本授权请求接口为setEmail()。

    HMS Core SDK 3.0版本

    HuaweiIdSignInOptions mSignInOptions = new HuaweiIdSignInOptions.Builder(HuaweiIdSignInOptions.DEFAULT_SIGN_IN).requestServerAuthCode().requestIdToken("").requestEmail().build();

    HMS Core SDK 4.0版本

    HuaweiIdAuthParams authParams = new HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setIdToken().setEmail().createParams();

    说明

    请求华为帐号用户授权应用获取相应信息的详情请参见HuaweiIdAuthParamsHelpersetEmail

    4、当使用jwt.io校验ID Token时,是否需要提供私钥?

    解析ID Token不需要私钥,校验ID Token也不需要私钥。

    5、示例代码中的ID Token客户端校验的代码运行后报错,提示:id Token validate failed.NoSuchMethodError?

    ID Token能正常演示的最小版本为Android 9,请排查测试手机上的版本是否符合要求。

    6、为什么配置正确,但是在端侧回调成功后的帐号信息里调用getEmail()获取不到Email信息?

    Email信息并不是必填字段,请登录帐号中心确认用户的帐号信息中是否包含Email信息。

    7、验证ID Token有效性中的公钥具体的更新策略是什么?什么时间点更新?更新后我缓存的旧公钥是不是就不能用了?

    验证ID Token有效性中的公钥每天更新一次,应用服务器可以缓存公钥的值。若公钥失效,旧公钥不可用,请在certs网站上获取最新的公钥,并更新应用服务器缓存的旧公钥。

    8、接入华为帐号,是否可以获取UID?

    不可以,由于需要隐私保护,接入华为帐号后只能获取openId。

    9、openId和unionId的长度问题?

    openId:当前非固定长度,最大允许长度256,需进行三倍冗余考虑,不推荐进行长度限制。

    unionId:当前固定长度46,最大允许长度64,需进行三倍冗余考虑,不推荐进行长度限制。

    说明

    unionId和openId的区别在于,如果开发者帐号下管理了多个应用,针对同一个华为帐号,不同的应用返回的openId值不同,但返回的unionId相同。如果开发者需要在不同应用中共享同一个华为帐号的用户信息,可以使用unionId作为用户标识。

    10、Access Token和Refresh Token的有效时长是多久?

    Access Token的有效时长是1个小时,Refresh Token的有效时长是180天。

    PS:这是根据官方目前的FAQ整理,如有变动,大家以官网发布的为准哦!

     欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

  • 相关阅读:
    数字孪生这10款超好用的软件,你用过几个?
    JS Set和Map数据结构
    被一位粉丝嫌弃了
    园区全光技术选型-中篇
    小程序意见反馈界面(简洁版代码)
    Linux-CentOS8-Oracle19c 安装详解
    架火炬市场现状及未来发展趋势分析
    数字孪生园区场景中的坐标知识
    主打的就是一蠢
    JavaScript面向对象学习构造函数、静态成员和实例成员(二)
  • 原文地址:https://blog.csdn.net/weixin_44708240/article/details/126617117