Apple 登录(使用 Firebase 和 Expo)在本地工作,但不能独立运行

Posted

技术标签:

【中文标题】Apple 登录(使用 Firebase 和 Expo)在本地工作,但不能独立运行【英文标题】:AppleSignIn (with Firebase & Expo) working locally but not on standalone 【发布时间】:2020-05-11 20:03:45 【问题描述】:

我在我的 Expo 应用程序上实现了 signinWithApple 按钮,当我在 Firebase 身份验证选项卡中使用 host.exp.Exponent 上的 host.exp.Exponent 进行 Apple 登录时,它在本地运行良好。

但是,当我创建一个独立的应用程序并使用 TestFlight 对其进行测试时,无论我在 Services ID 上使用 host.exp.Exponent、什么都没有,还是使用 my specific app service ID,它都不再起作用。

我在这里错过了什么?

我的密码:

handleApple = async () => 
    const csrf = Math.random().toString(36).substring(2, 15);
    const nonce = Math.random().toString(36).substring(2, 10);

    try 
      const appleCredential = await AppleAuthentication.signInAsync(
        requestedScopes: [
          AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
          AppleAuthentication.AppleAuthenticationScope.EMAIL
        ],
        state: csrf,
        nonce: nonce
      );

      const 
        identityToken,

        fullName,
        email
       = appleCredential;

      if (identityToken) 
        // login with credential
          const provider = new firebase.auth.OAuthProvider("apple.com");
          const credential = provider.credential(
            idToken: identityToken,
            rawNonce: nonce,

          );

          await firebase.auth().signInWithCredential(credential).then(user => 
          ...

编辑:

我设法通过在 firebase 的 the Service ID 字段上使用 my bundle identifier(这也是我的应用程序 ID)使其工作。

错误代码:

错误:ID 令牌 [##.app-videos] 中的受众与预期的受众##.signin 不匹配。

但现在我的网站上与 Apple 的登录中断了。 当我将 Service Id 字段更改为 my specific app service ID(在 Identifiers > Services IDs 中找到)时,我设法使其工作。

所以我被一个需要一些东西的应用程序和一个需要另一个东西的网站所困。这是为什么呢?

在我重新构建我的应用程序时,我是否应该做一些具体的事情,以便考虑到我对 mu 标识符所做的更改? 我在用这个,还不够吗?

expo build:ios --clear-provisioning-profile

【问题讨论】:

感谢您的回复,但您不必麻木不仁。我问的原因是因为我没有办法从 testflight 获取错误日志,但我设法安装哨兵并对其进行配置,所以他向我发送了 console.log。问题是我在 firebase 中使用了错误的服务 ID。这不是我们在文档中看到的“服务 ID”,而是实际的应用 ID。 【参考方案1】:

我遇到了同样的问题,应该通过以下方式解决。

您必须在 Firebase 控制台中使用与 Xcode 项目中相同的 bundleId 重新创建 GoogleService-info.plist

【讨论】:

您在使用 Expo 时无权访问 Xcode。所以你的回答没有帮助。还是谢谢。 对于任何进入这个答案的人,您可以在博览会中配置 GoogleService-info.plist,不要被 Alis 的答案所迷惑。查看 app.json ios.googleServicesFile 的 expos 属性

以上是关于Apple 登录(使用 Firebase 和 Expo)在本地工作,但不能独立运行的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Firebase Google Apple Facebook 登录

Apple使用FireBase Auth登录android有问题

如何使用 Cordova 和 PHP 后端实现 Apple 登录(在 FireBase 上)

签名验证失败 - Apple 使用 Firebase JWT 登录

Flutter Firebase 登录 Apple 不工作 ios

带有苹果登录的 Firebase 身份验证网络