iOS Собственный вход с помощью токена Apple возвращает идентификатор пакета в качестве аудитории вместо идентификатора службы - PullRequest
1 голос
/ 17 апреля 2020

У нас есть нативное приложение iOS, к которому мы пытаемся добавить Sign In With Apple. Все, что я могу найти, говорит о том, что нам нужно использовать идентификатор сервиса в качестве client_id. Проблема в том, что когда мы реализуем часть iOS, как в нескольких статьях (я упомяну некоторые в конце статьи), она, похоже, использует идентификатор пакета в качестве client_id. По крайней мере, это то, что находится в поле "aud" в токене, который мы получаем. Затем, когда мы пытаемся проверить токен, он терпит неудачу, потому что проверка ожидает идентификатор службы. Есть ли способ указать ему использовать идентификатор службы или мне нужно изменить код проверки для использования идентификатора пакета?

Я также настроил тестовый Javascript Вход в систему с помощью страницы Apple, которая использует идентификатор сервиса как client_id и все работает как положено. Вот код для справки:

<html>
<head>
</head>
<body>
    <script type="text/javascript" src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script>
    <div id="appleid-signin" data-color="black" data-border="true" data-type="sign in"></div>
    <script type="text/javascript">
        AppleID.auth.init({
            clientId: 'com.myproject.serviceid',
            scope: 'name email',
            redirectURI: 'http://local.test:32775/signin-apple',
            state: 'Some stuff'
        });
    </script>
</body>
</html>

Ссылки:

1 Ответ

1 голос
/ 17 апреля 2020

Если вы используете «Вход через Apple» на iOS, он всегда будет возвращать идентификатор пакета приложения (из моего опыта) в поле «aud», вам придется изменить код проверки.

Вы можете написать другой маршрут API в своем бэкэнде для приложения iOS, чтобы, если запрос поступил с этого маршрута, его аудитория получала идентификатор пакета и провела другую проверку.

Надеюсь, это поможет!

...