【问题标题】:How do I set displayName in Firebase when using Apple authentication?使用 Apple 身份验证时如何在 Firebase 中设置 displayName?
【发布时间】:2022-03-30 14:39:07
【问题描述】:

我正在尝试通过 Firebase Javascript SDK 在网络上使用 Apple OAuth,当我这样做时,返回的用户对象很好,除了 displayName,它为 null。

  let provider = new firebase.auth.OAuthProvider("apple.com");
  provider.addScope("email");
  provider.addScope("name");
  let userCred = await firebase.auth().signInWithPopup(provider);

但是,当我查看 userCred 时,我得到:

displayName: null

我尝试了fullName 的范围,但没有成功。

有什么方法可以获取显示名称吗?我使用它是为了让我的用户可以在网站上看到他们的名字,从而个性化体验。

【问题讨论】:

  • 只是为了确认:“Apple 仅在用户首次登录时与应用共享用户信息,例如显示名称。通常,Firebase 会在用户首次登录 Apple 时存储显示名称,您可以通过 firebase.auth().currentUser.displayName 获得。但是,如果您之前使用 Apple 在不使用 Firebase 的情况下将用户登录到应用程序,Apple 将不会向 Firebase 提供用户的显示名称。”你确定你是第一次使用?您可以尝试使用任何其他 Apple ID 吗?
  • 我现在真的没有其他可用的 Apple ID。这是一个新的应用程序,虽然我在开发过程中确实使用了另一种登录方法。这可能是这里的问题吗?我已经多次测试使用 Apple ID 登录 - 有没有办法“重置”Apple ID 以供 firebase 进行测试?
  • 您可以尝试从 Firebase 控制台删除您的帐户吗?
  • 我已多次从 Firebase 控制台删除我的帐户。在这方面没有运气。我正在让其他人尝试登录。
  • 我让其他人尝试过,它确实出现了。所以我想这只是我的Apple ID。我想知道是否有办法重置它。

标签: javascript firebase oauth firebase-authentication apple-login


【解决方案1】:

您在对 appleAuth 登录响应的响应中得到了正确的响应

const appleAuthRequestResponse = await appleAuth.performRequest({
      requestedOperation: appleAuth.Operation.LOGIN,
      requestedScopes: [appleAuth.Scope.EMAIL, appleAuth.Scope.FULL_NAME]
    });

appleAuthRequestResponse 将保存名称详细信息。

请注意,如果您已经使用您的帐户进行测试,则必须登录到您的 appleid 并删除您的应用程序的 Apple 登录信息才能进行测试。[同时从 firebase auth 中删除此用户]

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2020-03-03
    • 2018-07-22
    • 2018-09-25
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多