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

2023-11-30

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

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

const uiConfig = {
    callbacks: {
        signInSuccessWithAuthResult : function(authResult, redirectUrl)
        {   
            document.getElementById('loader').style.display = 'block';
            return false;   
        },
        uiShown: function() 
        {
            document.getElementById('loader').style.display = 'none';
        }
    },
    signInOptions: [
        firebase.auth.GoogleAuthProvider.PROVIDER_ID,
        'microsoft.com',
        firebase.auth.FacebookAuthProvider.PROVIDER_ID,
        firebase.auth.EmailAuthProvider.PROVIDER_ID,
        firebase.auth.PhoneAuthProvider.PROVIDER_ID,
    ],
};
   
// Initialize the FirebaseUI Widget using Firebase.
const ui = new firebaseui.auth.AuthUI(authorization);

// The start method will wait until the DOM is loaded.
ui.start('#firebaseui-auth-container', uiConfig);

脚本>`

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

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

我还通过查看本地存储中的 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 and Microsoft not working USA and Ukranine

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


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

    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    FirebaseUI 在某些地区不适用于 Apple IOS 和 macOS 设备,而在其他地区则适用 的相关文章

    随机推荐