Javascript 苹果用户无法使用服务ID登录,但在iOS应用程序上没有问题

Javascript 苹果用户无法使用服务ID登录,但在iOS应用程序上没有问题,javascript,ios,nuxt.js,apple-sign-in,Javascript,Ios,Nuxt.js,Apple Sign In,编辑 对于每一个在这方面遇到困难的人来说:这与我如何设置服务ID无关。是苹果响应中的用户对象导致了一个类型错误,不知何故在没有消息的情况下抛出 通常,只有当用户第一次在应用程序上签名时,用户对象才会出现。如果有一个用户在几个月前创建了一个帐户,那么响应将包含一个空用户对象,而不是一个空用户对象。因此,我确实检查了是否存在用户对象,但没有检查它是否为空,这导致了错误(请参见下面的if块) 原始问题 我在平台上的苹果用户在应用程序id(用于我们的iOS应用程序)和服务id(用于我们的web应用程序)

编辑

对于每一个在这方面遇到困难的人来说:这与我如何设置服务ID无关。是苹果响应中的用户对象导致了一个类型错误,不知何故在没有消息的情况下抛出

通常,只有当用户第一次在应用程序上签名时,用户对象才会出现。如果有一个用户在几个月前创建了一个帐户,那么响应将包含一个空用户对象,而不是一个空用户对象。因此,我确实检查了是否存在用户对象,但没有检查它是否为空,这导致了错误(请参见下面的if块)

原始问题

我在平台上的苹果用户在应用程序id(用于我们的iOS应用程序)和服务id(用于我们的web应用程序)之间同步时遇到问题

情况: 我们已经在iOS应用程序和NuxtJS web应用程序上实现了“使用apple id登录”。自从苹果发布该功能以来,用户已经能够在我们的iOS应用程序上注册,现在我们推出了我们的web应用程序。因此,我们创建了一个新的服务id,它连接到iOS应用程序的主应用程序id。 我主要与苹果官方文档一起使用,在web应用程序上实现登录按钮

问题: 在我们启动web应用程序之前通过apple id注册的用户无法登录我们的web应用程序。iOS应用程序仍然可以正常工作。在我们的应用程序或web应用程序上注册的新用户没有任何问题

因此,新用户可以使用新服务id和主应用id登录,但是已经使用应用id注册的用户只能登录应用。可悲的是,我还没有弄明白如何重现这一点。我真的很感激任何提示,这可能是什么原因

我将AppleJS SDK与NuxtJS和Typescript一起使用

以下是我如何设置apple登录安装()的方法:

这是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')
}
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')
}