Firebase 例外:不支持此浏览器,或者可能禁用第三方cookie和数据

Firebase 例外:不支持此浏览器,或者可能禁用第三方cookie和数据,firebase,firebase-authentication,angularfire2,Firebase,Firebase Authentication,Angularfire2,当我们的用户“阻止第三方cookie和站点数据”时,就会发生此错误 要复制错误,请转到: 检查您的Chrome浏览器“阻止第三方Cookie和站点数据” 去 单击“登录” 接下来,您将看到一个空白屏幕。如果打开浏览器开发人员控制台,您将看到以下错误: 我们始终建议用户取消对第三方cookie和站点数据的阻止;然而,一些用户仍然喜欢阻止它 你仍然可以登录到他们的Gmail与此阻止。有趣的是,为什么我们的用户不能使用Firebase Google OAuth登录,而Firebase Google O

当我们的用户“阻止第三方cookie和站点数据”时,就会发生此错误

要复制错误,请转到:

  • 检查您的Chrome浏览器“阻止第三方Cookie和站点数据”
  • 单击“登录”
  • 接下来,您将看到一个空白屏幕。如果打开浏览器开发人员控制台,您将看到以下错误:
  • 我们始终建议用户取消对第三方cookie和站点数据的阻止;然而,一些用户仍然喜欢阻止它

  • 你仍然可以登录到他们的Gmail与此阻止。有趣的是,为什么我们的用户不能使用Firebase Google OAuth登录,而Firebase Google OAuth提供了他们的第三方cookie和站点数据被阻止

  • 我们是用Angular2和Firebase建造的。用户是否仍然无法通过第三方cookie和站点数据阻止进行身份验证


  • 您正在使用的域是deeptent.com,但firebase针对其进行身份验证和设置Cookie的域是您的.firebaseapp.com域。所以,是的,cookies被认为是第三方的。firebase人员真的应该更仔细地看看他们是如何在firebase主机设置中连接自定义域的。此外,请参见此处:
    我对firebase和Angular也有同样的问题

    environment.ts
    文件中,查找:

    firebase: {
      authDomain: '<domain>.firebaseapp.com',
    
    firebase:{
    authDomain:“.firebaseapp.com”,
    
    在chrome设置中chrome://settings/content/cookies,将以下字符串添加到cookies白名单:

    https://[*.]firebaseapp.com

    不推荐使用,因为此解决方案不适用于所有人

    仅限Chrome:

    在chrome中打开内容设置

    然后选择cookies。在其中,查找阻止第三方cookies并禁用它


    注意:其他浏览器可能都有此选项,只需查找正确的位置即可:)

    解决方案非常简单。 假设您已在Firebase Hosting上托管您的应用程序,并且example.com已在托管您的应用程序,其中包括身份验证:

    您的身份验证域应类似于
    [projectid].firebaseapp.com

  • 更改Firebase配置的
    authDomain
  • 允许OAuth ID客户端的新重定向url:
    从>您的项目>ID>ID客户端OAuth 2.0
    添加
    https://example.com/__/auth/handler
    至授权重定向url列表

  • 部署您的主机以将更改包括在步骤1中

  • 此方法不需要添加CNAME,因为https缺少证书,CNAME可能无法工作

    官方文件

    旁注:不要忘了更新其他身份验证方法,如GitHub、Facebook等,将此重定向url添加到列表中


    在大多数浏览器中,当您处于
    匿名模式时会发生此错误。使用自定义firebase域

    2021解决方案 您可以将
    authDomain
    更改为使用与托管应用程序相同的域或子域。这样可以避免cookie错误

    自定义托管域 如果您使用的是自定义域,则可能需要如下设置:

    mydomain.com      -> Hosted website
    auth.mydomain.com -> Auth domain (firebaseConfig.authDomain)
    
    要设置此设置,您需要执行以下操作:

  • Firebase Console>Authentication>Authorized domains
    Add
    auth.mydomain.com
  • 使用您自己的DNS管理,添加以下DNS记录:
  • Firebase控制台>托管>添加自定义域
    (添加
    auth.mydomain.com
  • 然后在应用程序的
    firebaseConfig
    中,将
    authDomain
    的值更改为使用
    auth.mydomain.com

  • 我不确定Google登录web库是否在此模式下工作。如果是这样,您可以在这种情况下使用该库登录,然后获取Google OAuth ID令牌/访问令牌,并使用signInWithCredential登录Firebase。听起来像是一个计划。Thanks@choopage它起作用了吗?我自己刚遇到这个错误。@choopage嗨,正在努力解决同样的问题。。我看到firebase文档可以提供帮助(部分:“高级:手动处理登录流”)。有人设法解决了这个问题吗?@choopage-我最终发现了这个错误,向用户显示错误消息,并要求他使用电子邮件和密码登录。在我的项目中,
    authDomain
    设置位于
    firebase.comfig.ts
    环境中
    环境.ts
    文件旁边的
    目录。将Cookie列为白名单起了作用。我想为了增强安全性,我不会将整个
    *.firebaseapp.com
    列为白名单,而是专门针对我的项目的URL?是的,除了你的最终用户不会这样做,你必须拥有与他们相同的环境。你希望最终用户将这些添加到白名单中吗?我想知道我们是否应该这样做t将
    authDomain
    设置设置为自定义域而不是项目的
    firebaseapp.com
    URL?这并不能解决问题。您不能告诉所有客户端这样做才能使用您的应用程序。
    mydomain.com      -> Hosted website
    auth.mydomain.com -> Auth domain (firebaseConfig.authDomain)
    
    TYPE  = CNAME   
    HOST  = auth.mydomain.com
    VALUE = my-project-id.firebaseapp.com
    TTL   = 3600