gpt4 book ai didi

oauth - 电报机器人 - OAuth 授权

转载 作者:行者123 更新时间:2023-12-04 00:51:49 55 4
gpt4 key购买 nike

我想在我的机器人上通过 Twitch API 实现 OAuth 授权,当我在寻找更好的解决方案时,我发现了这个 @GitHubBot。在这个以integrations.telegram.org/github 开始的机器人重定向URL 中,我想知道如何实现这样的身份验证。如果你愿意,你能告诉在电报机器人中实现 OAuth 的最佳实践吗?更好的情况是:授权码还是隐式授权?
先感谢您!

最佳答案

我有通过 Telegram 授权访问 3rd 方服务的相同想法,我有两个主要想法。
灵感来自解释 deep linking usage :

  • 第一个想法是创建具有唯一重定向 URI 的唯一授权 URL。
    不幸的是,我在 Google 控制台中设置凭据时错过了有关重定向 URI 的解释。它说

  • "Authorized redirect URIs For use with requests from a web server. This is the path in your application that users are redirected to after they have authenticated with Google. The path will be appended with the authorization code for access. Must have a protocol. Cannot contain URL fragments or relative paths. Cannot be a public IP address. "



    因此,这种方法动态唯一重定向 URI 是从乞讨失败。
  • 第二个是访问资源,然后将散列的授权结果直接发送给机器人。
    预计看起来像这样:
    ttps://telegram.me/bot?hashed_code=code
    但是,不幸的是,我发现这也无法按计划进行。
    我对这个事实真的很失望,但经过一番偷偷摸摸,我发现通过直接 URL 将参数传递给你的机器人的唯一方法是/start 命令!

  • @BotSupport 证实了我的假设:

    JV, [17.09.16 22:16] I need to authorize user at 3rd party services. For example, Google calendar. So, I decided to create simple URI that redirects to Service Sign In and redirect URL to my server with token\authCode. As far as oauth does not authenticate user, I still need somehow identify who exactly granted access to his resources. So my next logical step was to hash received token and send it back to user via ttps://telegram.me/BOT?code=xxx I was convinced that if there is commandHandler for /code and /code is in the bot commands list I would be able to open conversation with my bot and sent this hashed code via webhook back to my server in order to detect who exactly it was at access grant step. I was shocked when I found that my plan was ruined at the last step: as far as I can see there is only /start command could be triggered. My question is: can you confirm that only /start command could query parameters via URL? if so, could you give me some advise about the right way of authorizing and authenticationg user?

    Bot Support, [20.09.16 01:50] Hi, sorry for the wait. You are talking about Deep-linking (https://core.telegram.org/bots#deep-linking) and, indeed, only /start and /startgroup can be used there.



    最后我能够成功执行用户授权\识别,但是看到 看起来很奇怪开始 对话中间的按钮。

    简历:不允许您像在 ttps://telegram.me/youtube 或 ttps://telegram.me/GitHubBot 中那样执行静默授权,但您可以执行“足够接近”版本的静默 oauth 授权

    注:现在我很难说出这些机器人是如何实现的(youtube、GitHubBot),但对于这些机器人来说,它应该是一些独特的后门,因为它们重定向到 ttps://integrations.telegram.org/youtube/oauth_redirect使用相同的方案(至少,来自 oauth 服务的重定向 URI 不包含唯一信息来识别用户,就像我在这篇文章中描述的那样)
    也许,有一种方法可以使用某些参数使 auth URL 唯一,但据我所知,这是不允许的。

    方案实现步骤:
  • 设置 webhook
  • 添加 oauth_cb 端点
  • 在例如 Google Console
  • 中获取您的应用程序的凭据
  • 等待回调到 oauth_cb 端点
  • 从第 4 步
  • 为授权码生成哈希值
  • 将 hash 和 auth_code 保存为键值对
  • 创建使用 5
  • 的哈希重定向到您的机器人的 URL
  • 生成包含来自 7
  • 的重定向 URL 的 HTML
  • 使用参数
  • 将 8 实际重定向到您的机器人
  • 为需要内联参数的/start 命令编写解析器
  • 使用/start 命令等待 webhook
  • 使用来自 6
  • 的键值对识别用户
  • 删除键值对
  • 你太棒了!现在您可以访问一些用户数据

  • 抱歉,据我所知,没有图片或链接

    关于oauth - 电报机器人 - OAuth 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37264827/

    55 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com