使用 django 的 Telegram 登录小部件 TypeError:无法使用某些浏览器读取 null 的属性(读取“postMessage”)

问题描述 投票:0回答:1

我正在尝试在我的 Django 网站中实现 Telegram 登录小部件。我正在使用 django-allauth,并且在我使用 Firefox 浏览器进行的测试中登录确实有效,但它无法在移动设备和 Chrome 桌面上工作。在 Telegram Messenger 中输入我的电话号码并确认登录后,授权对话框就会消失。

我能够为快速消失的弹出窗口运行调试器并捕获此错误:

类型错误:无法读取 null 的属性(读取“postMessage”)

登录页面是:

<html> <body> <div> <script async src="https://telegram.org/js/telegram-widget.js?21" data-telegram-login="NameOfTelegrambot" data-size="medium" data-userpic="false" data-auth-url="https://example.com/accounts/telegram/login/"></script> </div> </body> </html>

使用 Firefox 浏览器登录,我可以看到:

已成功以 TelegramUserName 身份登录。

用户名显示在右上角,如“django-classified”所示

但在 Chrome 或我测试过的一些流行的移动浏览器中不会发生这种情况。

.env

文件中提供一些 Telegram Bot 令牌后,可以通过 docker compose 文件来测试可以在本地运行的设置。


我也遇到这个问题了。 经过漫长的调试过程,我发现只需要在Django配置文件中配置以下内容即可:
javascript django google-chrome telegram django-allauth
1个回答
0
投票
SECURE_CROSS_ORIGIN_OPENER_POLICY = "same-origin-allow-popups"

这应该可以解决问题。
这个问题出现已经有一段时间了;我不确定它是否还能帮助你。
祝下一个面临这个问题的人好运。

© www.soinside.com 2019 - 2024. All rights reserved.