我正在尝试使用 Telegram 登录小部件。
我已在登录页面中插入以下脚本:
<script async="" src="https://telegram.org/js/telegram-widget.js?4" data-telegram-login="<name of bot>" data-size="large" data-auth-url="http://local.<domain>/tg" data-radius="0" data-request-access="write"></script>
Run Code Online (Sandbox Code Playgroud)
只要显示登录小部件,此操作就有效。
当我单击“使用 Telegram 登录”按钮时,如果我想登录该网站,它会正确地要求我接受/拒绝。但随后就没有再发生任何事情。
通过调查网络请求,我发现电报服务器响应如下:
{"error":"NOT_AUTHORIZED","html":"<button class=\"btn tgme_widget_login_button\" onclick=\"return TWidgetLogin.auth();\"><i class=\"tgme_widget_login_button_icon\"><\/i>Log in with Telegram<\/button>","origin":"http:\/\/local.<domain>"}
Run Code Online (Sandbox Code Playgroud)
有什么是我应该做的而错过的吗?
我确实与 @BotFather 进行了交谈,将域名设置为http://local.<domain>.
登录时,我还在客户端中收到来自 Telegram 的消息,告诉我:
您已通过@成功登录local.furry.cafe。该网站收到您的姓名、用户名和个人资料图片。
可能有问题的事情:
local.<domain>是我的 /etc/hosts 的一部分,但这应该不是问题,对吧?经过几个小时的调试,我找到了原因:
您需要将第三方 cookie 设置为允许的。
由于请求似乎是从询问窗口发出的,因此它没有附加任何身份验证 cookie,这反过来又给出响应NOT_AUTHORIZED,同时在电报客户端中“登录”您。
由于服务器不知道 cookie 未设置,因此无法说什么。
TL;DR:如果您想以用户身份使用 Telegram Login,请不要禁用第三方 cookie。
我必须添加一个小文本解释,以便如果用户确实禁用了它们,则会向他们显示。
| 归档时间: |
|
| 查看次数: |
2392 次 |
| 最近记录: |