Серверу учетных записей Huawei не удалось отобразить адрес электронной почты
Адрес электронной почты содержится в информации об учетной записи, но не найден в ответе на вызов API /oauth2/v3/tokeninfo от сервера учетных записей Huawei. Зачем?
Описание
После интеграции HUAWEI Account Kit я вызываю /oauth2/v3/tokeninfo API сервера учетных записей Huawei для получения идентификатора, но не могу найти адрес электронной почты в теле ответа. Ответ в этом случае следующий:
{
"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 Ответ на успешный вызов
1 ответ
Перед получением токена ID приложение не запрашивает у пользователя HUAWEI ID авторизацию приложения для получения адреса электронной почты.
Решение:
Выполните на устройстве следующие операции:
(SDK HMS 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();
Метод requestEmail() в HMS SDK 3.0 и метод setEmail() в HMS SDK 4.0 используются для запроса пользователя HUAWEI ID на авторизацию приложения для получения адреса электронной почты. Эти два метода необходимо заранее добавить в код на устройстве.
Подсказки:
Чтобы узнать, как запросить у пользователя HUAWEI ID авторизацию приложения для получения соответствующей информации, перейдите по следующей ссылке:
https://developer.huawei.com/consumer/en/doc/HMS-References/account-huaweiidauthparamsHelper