Как получить имя пользователя при входе через Apple?

Я пытаюсь аутентифицировать пользователей с помощью Apple в Интернете (что необходимо, так как у нас также есть приложение для iOS и опция входа в Facebook, и мы должны также выполнить вход с помощью Apple, иначе Apple откажется наше приложение обновляется на стороне iOS), и вот мои метатеги (с удаленной конфиденциальной информацией), как в примере Apple:

<meta name="appleid-signin-client-id" content="com.myapp">
<meta name="appleid-signin-scope" content="name email">
<meta name="appleid-signin-redirect-uri" content="https://my.return.url">
<meta name="appleid-signin-state" content="x login">
<meta name="appleid-signin-nonce" content="some number">
<meta name="appleid-signin-use-popup" content="false">

Когда пользователь нажимает кнопку, он запрашивает правильное имя и / или адрес электронной почты:

введите описание изображения здесь

Я продолжаю, и мой URL-адрес перенаправления вызывается должным образом. Однако, когда я декодирую возвращенный id_token, я вижу только поля email и email_verified в дополнение к полям, связанным с JWT. У меня нет ничего, связанного с именем пользователя. Я знаю, что поле имени заполняется только при первой аутентификации, так что это происходит после нового входа в систему после удаления моего приложения из моего Apple ID со страницы приложений и веб-сайтов с использованием страницы Apple ID. Если я изменю appleid-signin-scope в метатегах на name, я тоже не получу письма, так что это значение каким-то образом будет уважаться. Я также ничего не касался поля имени, как на скриншоте (я мог продолжить работу с помощью Touch ID, даже не нажимая ничего), но id_token может иметь только адрес электронной почты, а не имя. Мне нужно получить имена пользователей в дополнение к электронной почте, чтобы завершить регистрацию, и я вынужден добавить параметр входа с помощью Apple, чтобы отправлять любые обновления в мое приложение iOS. Многие люди сообщают, что они получают это имя только в первый раз (как ясно заявляет Apple), но я не понимаю его даже в первый раз.

Что я делаю неправильно?


person Can Poyrazoğlu    schedule 03.03.2021    source источник
comment
Возможно, это функция безопасности - пользователь, входящий в систему со своим идентификатором Apple, будет считать, что вам предоставлен только его идентификатор Apple?   -  person Mr R    schedule 13.03.2021
comment
@MrR нет. он представляет собой экран, на котором я могу явно включить / отключить совместное использование имени / реальной почты. Я тестирую свою учетную запись и даю разрешение.   -  person Can Poyrazoğlu    schedule 17.03.2021


Ответы (1)


Код должен запрашивать свойство UserI, как указано в Войти с помощью Apple API документация.

Образец:

<meta name="appleid-signin-client-id" content="com.myapp">
<meta name="appleid-signin-scope" content="UserI">
<meta name="appleid-signin-redirect-uri" content="https://my.return.url">
<meta name="appleid-signin-state" content="x login">
<meta name="appleid-signin-nonce" content="some number">
<meta name="appleid-signin-use-popup" content="false">

Изображение документации

person Anonymous    schedule 13.03.2021
comment
Откуда именно вы взяли, что содержимое HTML-тега должно быть установлено на буквальное значение UserI? В документации по ссылке не увидел. UserI - это интерфейс, имя интерфейса UserI не используется в качестве строкового литерала в теге HTML. - person Can Poyrazoğlu; 17.03.2021
comment
Прочитал документы. Это значение области входа. - person Anonymous; 19.03.2021
comment
есть ли ссылка на то, где указано такое использование? это не по ссылке в ответе. - person Can Poyrazoğlu; 19.03.2021
comment
Я думал, что это было. Я добавил изображение к ответу, показывающему это. - person Anonymous; 19.03.2021
comment
Я видел эту страницу, но нет никакого понятия об использовании UserI в качестве буквального строкового значения. это не строка, это имя интерфейса. - person Can Poyrazoğlu; 20.03.2021
comment
Вы можете попробовать. - person Anonymous; 20.03.2021