如何在使用Telegram登录小部件登录后登出/切换账号
我完全懂你的困扰——Telegram Widget API确实没有提供直接的登出接口,这对需要切换账号的场景来说挺闹心的。不过除了你已经发现的手动操作,还有几个更流畅的方案可以试试:
用Telegram官方登出链接实现跳转登出:你可以在页面里加一个登出按钮,点击后跳转到
https://oauth.telegram.org/logout。这个页面会自动清除用户在oauth.telegram.org的会话Cookie,之后用户再点击登录Widget,就会重新进入账号选择流程了。为了不打断用户在你页面的操作,你可以用新标签页打开这个链接,或者用弹窗的形式加载,操作完成后再关闭弹窗回到你的页面。引导用户手动清除Cookie(优化体验):既然浏览器同源策略限制了我们直接操作其他域名的Cookie,那可以做个友好的引导提示,告诉用户如何快速清除
oauth.telegram.org的Cookie。比如针对不同浏览器给出简单步骤:Chrome可以按F12打开开发者工具,在Application面板的Cookie里找到该域名并删除;Firefox则在设置的隐私选项里搜索对应域名清除。重置Widget实例作为辅助:当用户点击登出后,你可以先销毁当前的Telegram登录Widget,再重新初始化一个新的实例。不过要注意,这个方法只是重置Widget的状态,如果用户的会话Cookie还在,还是会自动登录之前的账号,所以只能配合前面的方法一起用,提升用户感知。
其实Telegram的OAuth机制本身就是依赖第三方域名的Cookie来维持会话的,官方目前确实没有提供让开发者主动触发登出的API,所以上述方法里,用官方登出链接是最稳定可靠的方案。
内容的提问来源于stack exchange,提问作者The Mortiest Morty

