华为账号服务器显示邮箱地址失败

The Huawei Account Server failed to display the email address

邮箱地址包含在帐号信息中,但在华为帐号服务器对/oauth2/v3/tokeninfo API调用的响应中找不到。为什么?

描述

集成华为帐号服务后,调用华为帐号服务器的/oauth2/v3/tokeninfo API获取ID token,但在响应体中找不到邮箱地址。 本例响应如下:

{
  "at_hash": "XXXXXX",
  "aud": "XXXXXX",
  "sub": "XXXXXX",
  "azp": "XXXXXX",
  "kid": "XXXXXX",
  "iss": "https://accounts.huawei.com",
  "typ": "JWT",
  "exp": 1579682457,
  "display_name": "338******53",
  "iat": XXXXXX,
  "alg": "RS256"
}

API参考中的回复如下:

图1 调用成功后的响应

应用获取ID token前,未请求华为帐号用户授权应用获取邮箱地址。

解法:

在设备上执行以下操作:

(HMS SDK 3.0)

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

(HMS SDK 4.0)

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

HMS SDK 3.0的requestEmail()方法和HMS SDK 4.0的setEmail()方法用于请求华为帐号用户授权应用获取邮箱。这两个方法必须提前在设备上添加代码。

提示:

如何请求华为帐号用户授权应用获取相关信息,请访问以下link:

https://developer.huawei.com/consumer/en/doc/HMS-References/account-huaweiidauthparamsHelper#setEmail