Серверу учетных записей 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

Другие вопросы по тегам