Пользователи Apple не могут войти в систему с идентификатором службы, но у них нет проблем с приложением iOS - PullRequest
3 голосов
/ 26 мая 2020

РЕДАКТИРОВАТЬ

Для всех, у кого были проблемы с этим: это не было связано с тем, как я настроил идентификатор службы. Это был пользовательский объект в ответе от 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')
}
...