当我们的用户“阻止第三方Cookie和网站数据”时,会发生此错误。
要复制错误,请转到:
我们始终建议用户取消选中阻止第三方Cookie和网站数据;但是,有些用户仍然喜欢阻止它。
仍然可以使用此屏蔽功能登录Gmail。有趣的是,为什么我们的用户无法使用随第三方Cookie提供的Firebase-Google OAuth登录?网站数据被阻止了?
我们使用Angular2和Firebase构建。用户是否仍然无法通过第三方Cookie和网站数据进行身份验证?
答案 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
authDomain
: config = {
apiKey: ...,
authDomain: example.com,
databaseURL: ...,
projectId: ...,
storageBucket: ...,
appId: ...,
}
允许OAuth ID客户端使用新的重定向网址:
从console.developers.google.com>您的项目> id> ID客户端OAuth 2.0
将https://example.com/__/auth/handler
添加到授权重定向网址列表中
部署主机,以将更改包括在步骤1中。
此方法不需要添加CNAME,由于缺少https的证书,该CNAME可能无法正常工作。
官方文档https://firebase.google.com/docs/auth/web/google-signin
旁注:别忘了还更新您的其他身份验证方法(例如GitHub,Facebook等)以将此重定向URL添加到列表中。
答案 3 :(得分:0)
当您在大多数浏览器中处于 Incognito Mode
时会发生此错误。使用自定义 Firebase 域。
您可以更改 authDomain
以使用 Same Domain 或 Sub Domain 作为托管应用程序。这避免了 cookie 错误。
如果您使用自定义域,您可能需要这样的设置:
mydomain.com -> Hosted website
auth.mydomain.com -> Auth domain (firebaseConfig.authDomain)
要进行设置,您需要执行以下操作:
Firebase Console > Authentication > Authorized domains
添加 auth.mydomain.com
。TYPE = CNAME
HOST = auth.mydomain.com
VALUE = my-project-id.firebaseapp.com
TTL = 3600
Firebase Console > Hosting > Add custom domain
(添加 auth.mydomain.com
)firebaseConfig
中将 authDomain
的值更改为使用 auth.mydomain.com
注意
此解决方案在本地主机上运行时不起作用,因为 authDomain 不会是 localhost 的子域。
在这种情况下,最简单的解决方案是在您的本地域上允许 3rd 方 cookie,以下是在 Chrome 中的操作方法:
转到:chrome://settings/cookies
答案 4 :(得分:-1)
仅Chrome:
在Chrome Content Settings > Cookies
,然后选择Cookie。在其中找到阻止第三方Cookie 并将其禁用。
注意: 每个其他浏览器都可能具有此选项,这只是在正确的位置查找问题:)