РЕДАКТИРОВАТЬ
Для всех, у кого были проблемы с этим: это не было связано с тем, как я настроил идентификатор службы. Это был пользовательский объект в ответе от Apple, который вызвал ошибку типа, которая каким-то образом была выдана без сообщения.
Обычно пользовательский объект должен присутствовать только тогда, когда пользователь входит в приложение в первый раз. Если есть пользователь, который создал учетную запись в течение нескольких месяцев go, ответ будет содержать пустой объект пользователя, а не ничего. Поэтому я проверил, существует ли пользовательский объект, но не проверял, был ли он пустым или нет, что вызвало ошибку (см. Блок if ниже).
Исходный вопрос
У меня проблема с синхронизацией пользователей Apple на платформе между идентификатором приложения, который используется для нашего iOS приложения, и идентификатором службы, который используется для нашего веб-приложения.
Ситуация: мы реализовали «вход с идентификатором Apple» как в приложении iOS, так и в веб-приложении Nuxt JS. Пользователи могут зарегистрироваться в нашем приложении iOS с тех пор, как Apple выпустила эту функцию, и теперь мы запустили наше веб-приложение. Для этого мы создали новый идентификатор службы, который связан с идентификатором основного приложения нашего приложения iOS. В основном я использовал этот учебник вместе с официальными документами Apple, чтобы реализовать кнопку входа в веб-приложение.
Проблема: пользователи, которые зарегистрировались через Apple ID до того, как мы запустили веб-приложение, не могут войти в наше веб-приложение. Приложение iOS по-прежнему работает нормально. Новые пользователи, которые регистрируются либо в нашем приложении, либо в веб-приложении, не имеют никаких проблем.
Таким образом, новые пользователи могут входить в систему с новым идентификатором службы и идентификатором основного приложения, но пользователи, которые уже зарегистрировались с идентификатором приложения, могут войти только в приложение. К сожалению, я еще не понял, как это воспроизвести. Был бы очень признателен за любой намек на то, что может быть причиной этого.
Я использую Apple JS SDK с Nuxt JS и Typescript.
Вот как я настроил вход в систему в apple в смонтированном ():
const windowLocal = window as any
windowLocal.AppleID.auth.init({
clientId: process.env.APPLE_CLIENT_ID,
scope: 'email name',
redirectURI: process.env.APPLE_REDIRECT_URI,
state: 'init',
usePopup: true
})
Это метод входа в Apple:
try {
const result = await windowLocal.AppleID.auth.signIn()
const appleUser = jwt.decode(result.authorization.id_token, {
complete: true
}) as any
this.appleUserId = appleUser.payload.sub
this.email = appleUser.payload.email
this.appleCode = result.authorization.code
if (result.user) {
this.firstName = result.user.name.firstName
this.lastName = result.user.name.lastName
} else {
this.showNamePrompt = true
}
this.registerApple() // sends credentials to our backend
} catch (error) {
eventModule.newError('error.login.apple')
}