django Google身份验证在Microsoft Edge中不起作用

lf5gs5x2  于 2023-01-06  发布在  Go
关注(0)|答案(1)|浏览(161)

当点击Continue With Google按钮时,一个弹出窗口出现(在我用Python中的Django创建的网站上),如预期的那样,在Google Chrome中询问使用哪个帐户继续等...
在Microsoft Edge中做同样的事情,弹出窗口是空白的,没有内容。我不确定这是我的代码、OAUTH帐户还是Microsoft Edge本身的问题。
This is the popup in Google Chrome (working as normally)
This is the popup in Microsoft Edge (not working at all)
我希望顶部的图像在两个浏览器中都会出现。有人知道为什么这在Microsoft Edge中不起作用吗?
编辑:
以下两个错误出现在Microsoft Edge控制台中,但它们也会显示在Google Chrome中:

Failed to load resource: the server responded with a status of 400 ()

[GSI_LOGGER]: The given origin is not allowed for the given client ID.

我在Firefox中测试了这个网站,一切都和预期的一样,类似于谷歌Chrome。
为什么Edge是唯一无法正常工作的浏览器(我的Microsoft Edge是最新的)
HTML代码:

<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload"
    data-client_id="**********.apps.googleusercontent.com"
    data-login_uri="http://localhost:8000/accounts/continue-with-google/?source=signup"
    data-auto_prompt="false">
</div>
<div id="continueWithGoogleButton" class="g_id_signin"
    data-type="standard"
    data-size="large"
    data-theme="outline"
    data-text="continue_with"
    data-shape="pill"
    data-logo_alignment="left"
    data-width="300">
</div>
92dk7w1h

92dk7w1h1#

一定要阅读这篇文章,因为它看起来可能是导致问题的原因(空白窗口)。另外,the key points很重要(#2和#3),因为你是在localhost中开发的。这也意味着你可能需要添加(如果你还没有)一个关于引用策略的meta标记。
FiddlingAway在评论中回答了这个问题。我想把这个问题作为一个答案发表,以便将来参考。为了节省一些研究,在Django中,你需要写settings.py文件SECURE_CROSS_ORIGIN_OPENER_POLICY = "same-origin-allow-popups"。检查上面的链接来了解这意味着什么。
希望这有帮助!

相关问题