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

时间:2017-01-19 07:50:01

标签: firebase firebase-authentication angularfire2

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

要复制错误,请转到:

  1. 检查您的Chrome浏览器“阻止第三方Cookie和网站数据”reference in this guide
  2. 转到https://www.deeptent.com
  3. 点击登录
  4. 接下来,您将看到一个空白屏幕。如果您打开浏览器开发人员控制台,您将看到以下错误:
  5.   

    我们始终建议用户取消选中阻止第三方Cookie和网站数据;但是,有些用户仍然喜欢阻止它。

    1. 仍然可以使用此屏蔽功能登录Gmail。有趣的是,为什么我们的用户无法使用随第三方Cookie提供的Firebase-Google OAuth登录?网站数据被阻止了?

    2. 我们使用Angular2和Firebase构建。用户是否仍然无法通过第三方Cookie和网站数据进行身份验证?

5 个答案:

答案 0 :(得分:8)

我在使用Firebase和Angular时遇到了同样的问题。

在您的class ItemSerializer(serializers.ModelSerializer): # your fields def to_representation(self, instance): data = super().to_representation(instance).copy() data.update({"key": "value"}) return data 文件中,查找:

environment.ts

在chrome设置 chrome:// settings / content / cookies 中,将以下字符串添加到cookie白名单中:

firebase: { authDomain: '<domain>.firebaseapp.com',

答案 1 :(得分:6)

您使用的域名是deeptent.com,但firebase正在对其进行身份验证并设置Cookie的域名是您的.firebaseapp.com域名。所以,是的,cookie被认为是第三方。 firebase人员真的应该更加关注他们如何在firebase托管设置中连接自定义域。另外,请看这里: Use Google Firebase Authentication without 3rd Party Cookies

答案 2 :(得分:0)

解决方案非常简单。 假设您已将应用程序托管在Firebase托管上,并且example.com已经托管了包含auth的应用程序:

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

  1. 更改Firebase配置的authDomain
config = {
    apiKey: ...,
    authDomain: example.com,
    databaseURL: ...,
    projectId: ...,
    storageBucket: ...,
    appId: ...,
}
  1. 允许OAuth ID客户端使用新的重定向网址:
    console.developers.google.com>您的项目> id> ID客户端OAuth 2.0
    https://example.com/__/auth/handler添加到授权重定向网址列表中

  2. 部署主机,以将更改包括在步骤1中。

此方法不需要添加CNAME,由于缺少https的证书,该CNAME可能无法正常工作。

官方文档https://firebase.google.com/docs/auth/web/google-signin

  

旁注:别忘了还更新您的其他身份验证方法(例如GitHub,Facebook等)以将此重定向URL添加到列表中。

答案 3 :(得分:0)

当您在大多数浏览器中处于 Incognito Mode 时会发生此错误。使用自定义 Firebase 域。

2021 年解决方案

您可以更改 authDomain 以使用 Same DomainSub Domain 作为托管应用程序。这避免了 cookie 错误。

自定义托管域

如果您使用自定义域,您可能需要这样的设置:

mydomain.com      -> Hosted website
auth.mydomain.com -> Auth domain (firebaseConfig.authDomain)

要进行设置,您需要执行以下操作:

  1. Firebase Console > Authentication > Authorized domains 添加 auth.mydomain.com
  2. 使用您自己的 DNS 管理,添加以下 DNS 记录:
TYPE  = CNAME   
HOST  = auth.mydomain.com
VALUE = my-project-id.firebaseapp.com
TTL   = 3600
  1. Firebase Console > Hosting > Add custom domain(添加 auth.mydomain.com
  2. 然后在您应用的 firebaseConfig 中将 authDomain 的值更改为使用 auth.mydomain.com

注意

此解决方案在本地主机上运行时不起作用,因为 authDomain 不会是 localhost 的子域。

在这种情况下,最简单的解决方案是在您的本地域上允许 3rd 方 cookie,以下是在 Chrome 中的操作方法:

转到:chrome://settings/cookies

enter image description here

答案 4 :(得分:-1)

仅Chrome:

在Chrome Content Settings > Cookies

中打开内容设置

,然后选择Cookie。在其中找到阻止第三方Cookie 并将其禁用。

注意: 每个其他浏览器都可能具有此选项,这只是在正确的位置查找问题:)