电报登录以“ NOT_AUTHORIZED”响应

时间:2018-10-20 07:55:04

标签: 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>

这在显示登录小部件的范围内有效。

当我单击“使用电报登录”按钮时,它会正确询问我是否要登录此网站。但是随后没有发生任何事情。

通过调查网络请求,我发现电报服务器做出了如下响应:

{"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>"}

我缺少我应该做的事情吗?

我确实与@BotFather聊天,将域设置为http://local.<domain>

登录时,我还从客户端的Telegram收到一条消息,告诉我:

  

您已经通过@成功登录了local.furry.cafe。   该网站收到了您的姓名,用户名和个人资料图片。

可能有问题的东西

  • local.<domain>是我的/ etc / hosts的一部分,但这应该不是问题吧?
  • 我不在开发机上使用HTTPS吗?但这并不是任何地方的要求。

1 个答案:

答案 0 :(得分:3)

经过几个小时的调试,我发现了原因:

您需要设置允许的第三方Cookie

由于该请求似乎是从询问窗口发出的,因此它没有附加任何身份验证Cookie,这反过来又给了NOT_AUTHORIZED响应,而与此同时,电报客户端。

由于服务器不知道未设置cookie,所以它什么也没说。

TL; DR:如果您想以用户身份使用Telegram Login,请不要禁用第三方cookie。

我必须添加一个简短的文字说明,以便如果用户确实禁用了它们,则会向他们显示。