合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
如果您在下面没有找到需要的问题,请加入Stack Overflow社区参与讨论。
可以,很多应用都有三方帐号登录功能,这是个很常见的场景。
在没有HMS Core(APK)的手机上,如果您不想下载HMS Core(APK),可以通过AppAuth SDK,实现华为帐号授权登录,请参见通过AppAuth接入华为帐号。
华为帐号支持在非华为的安卓手机上登录。
应用退出华为帐号后,设备上的华为帐号仍然处于登录状态,因为应用已经被授权,所以后续登录不提示输入登录凭据是正常情况。您可以尝试以下操作:
原因是SDK中有个页面未做全屏适配。如果应用调用登录接口时的页面为全屏页面,则您需要按照以下的方法解决:
public void accountAuthSignIn() {
AccountAuthParams authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setAuthorizationCode().createParams();
AccountAuthService service = AccountAuthManager.getService(MainActivity.this, authParams);
Intent intent = service.getSignInIntent();
intent.putExtra(CommonConstant.RequestParams.IS_FULL_SCREEN, true);
startActivityForResult(intent, 8899);
}Access Token和Refresh Token的长度与其中编码的信息有关,目前来讲Access Token和Refresh Token的长度不会超过1024字符。
单个App在一小时内最多允许10000次调用,超过限制将获取Token失败。
问题描述
集成Account Kit,获取ID Token,调用服务侧的/oauth2/v3/tokeninfo接口后,发现不能在响应体中获取响应字段的Email信息。
得到的响应如下:
{
"at_hash": "XXXXXX",
"aud": "XXXXXX",
"sub": "XXXXXX",
"azp": "XXXXXX",
"kid": "XXXXXX",
"iss": "https://accounts.huawei.com",
"typ": "JWT",
"exp": 1579682457,
"display_name": "136******53",
"iat": XXXXXX,
"alg": "RS256"
} 接口指导中的响应如下所示:
{
"iss":"String",
"sub":"String",
"aud":"String",
"exp":"Long",
"iat":"Long",
"nonce":"String",
"at_hash":"String",
"azp":"String",
"email_verified":"Boolean",
"email":"String",
"picture":"String",
"name":"String",
"locale":"String",
"family_name":"String",
"given_name":"String",
"display_name":"String"
} 可能原因
在获取ID Token前,未请求华为帐号用户授权应用获取Email地址。
处理步骤
在端侧的代码中提前添加请求华为帐号用户授权应用获取Email地址的操作。
3.0版本的授权请求接口为requestEmail();4.0版本授权请求接口为setEmail()。
HuaweiIdSignInOptions mSignInOptions = new HuaweiIdSignInOptions.Builder(HuaweiIdSignInOptions.DEFAULT_SIGN_IN).requestServerAuthCode().requestIdToken("").requestEmail().build();HuaweiIdAuthParams authParams = new HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setIdToken().setEmail().createParams();
请求华为帐号用户授权应用获取相应信息的详情请参见HuaweiIdAuthParamsHelper的setEmail。
解析ID Token不需要私钥,校验ID Token也不需要私钥。
ID Token能正常演示的最小版本为Android 9,请排查测试手机上的版本是否符合要求。
Email信息并不是必填字段,请登录帐号中心确认用户的帐号信息中是否包含Email信息。
验证ID Token有效性中的公钥每天更新一次,应用服务器可以缓存公钥的值。若公钥失效,旧公钥不可用,请在certs网站上获取最新的公钥,并更新应用服务器缓存的旧公钥。
不可以,由于需要隐私保护,接入华为帐号后只能获取OpenID和UnionID。
长度
唯一性标识
数据类型
OpenID和UnionID均是字符串类型的数据。
大小写敏感
OpenID和UnionID严格区分大小写。
实际应用中的注意事项
在存储、查询或比较OpenID或UnionID时,请务必保持其原始的大小写格式。
Access Token的有效时长是1个小时,Refresh Token的有效时长是180天。
根据Google Play的要求,从其下载的HMS Core (APK)没有读取短信的权限。
Android 11更改了应用查询用户在设备上已安装的其他应用以及与之交互的方式。您应用的targetSdkVersion是30或者更高版本,并且集成的Account Kit 6.1.0.300之前版本时,将无法访问HMS Core(APK),并且持续提示升级。
您可以通过以下两种方法解决。
升级Account Kit的SDK版本至6.7.0.300,版本信息请参见版本更新说明。
如果不升级SDK,需要在“AndroidManifest.xml”中manifest下添加<queries>标签。
<manifest ...>
...
<queries>
<intent>
<action android:name="com.huawei.hms.core.aidlservice" />
</intent>
</queries>
...
</manifest> <queries>标签对工具的要求如下: