FirebaseUI 在某些地区不适用于苹果 IOS 和 macOS 设备,而适用于其他地区

问题描述 投票:0回答:1

我有一个使用 firebase UI 来登录用户的 Web 应用程序。我们已经将 firebase 配置中的 auth 域替换为应用程序运行的自定义域,并且还尝试切换到 signInWithPopup,但社交提供商 Facebook 和 Microsoft 没有似乎在某些 iOS 和 macOS 设备上工作,而在其他设备上工作。虽然使用 Google 登录适用于所有人。

就像在我的应用程序中一样,我可以在印度通过 firebase UI 轻松登录 Microsoft,但在相同的 iOS 版本上我无法在美国这样做。更奇怪的是在 macOS 上,我可以在印度和乌克兰通过 Facebook 登录应用程序,但不能在美国登录。这可能与地区无关,而是与特定设备有关。但对我来说,因为所有的设备本质上都是一样的,所以我似乎没有弄清楚这个问题。我还验证了所有不同设备上的浏览器设置都是相同的。 ``

这是我用来渲染 firebase UI 的代码片段。对于它不工作的设备,实际发生的是:

  1. 页面加载
  2. 用户选择使用 Microsoft 登录
  3. 用户被带到 Microsoft 页面(通过重定向或弹出窗口,在我们的例子中无关紧要)
  4. 用户在微软页面完成登录
  5. 用户被带回我们的页面,但现在登录 ui 消失了,加载程序不可见

我还通过查看本地存储中的 firebase 用户记录来检查未登录的用户。

注意:对于返回登录页面的其他设备(它正在工作的地方),它会尝试提取用户的登录令牌,如果它得到它,它会被添加为 cookie,并且应用程序会按预期工作。

firebase.auth().onIdTokenChanged(async (user) => { if (user) { user.getIdToken().then(function (accessToken) { document.cookie = @Json.Serialize(FirebaseAuthConfiguration.CookieName) + "=" + accessToken.toString() + "; path=/"; }); } });


其工作正常的设备:

  • Windows 机器
  • 安卓设备
  • 印度的 iPhone
    设备有问题:
  • IPhone、IPad(微软和 Facebook 在美国和乌克兰无法使用`您的文字`)
  • Macbook(Facebook 在乌克兰不可用)
  • Macbook(Facebook 和 Microsoft 无法在美国和乌克兰使用

    尝试将 firebase 配置中的 auth 域替换为运行应用程序的自定义域,同时切换到 signInWithPopup

  • firebase firebase-authentication firebaseui
    1个回答
    0
    投票

    我终于找到了一个解决方案,safari 不允许站点的子域访问其内部存储,这反过来会影响所有在 iOS 上运行的网络浏览器,因为它们都使用 webkit。选择 firebase 托管对我的情况也没有帮助,我找到的唯一可能的解决方案是在我的域中自行托管登录帮助程序代码或代理对 firebaseapp.com 的身份验证请求。问题在于跨域存储访问。在我看来和我的发现对 firebaseapp.com 的代理身份验证请求 似乎是缓解此问题的唯一有效方法。

    © www.soinside.com 2019 - 2024. All rights reserved.