这是我第一次与 Google API 交互,我正在使用 python3.9 和这个库Python Telegram Bot 我想通过电报机器人访问用户 Google API 日历,但我似乎找不到任何文章来指导我完成该操作。我的关键问题(我认为)是将成功授权流程重定向回电报机器人。
这就是我的想法:
问题出在步骤3和步骤4之间。标准的授权链接是
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=<clientid>&redirect_uri=<redirect_uri>&scope=<scope>&state<state>&access_type=offline
如何将授权链接发送回我的电报机器人?我应该创建另一个 API 端点来接收该授权链接吗?或者我可以在
更新1
感谢 CallMeStag,我设法找到一种方法来完成 oauth 过程。对于遇到同样问题的人,这就是我所做的 先决条件:在 google console api - Web 应用程序中创建凭据。 redirect_uri 设置为 localhost:8000 (开发阶段)
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=<clientid>&redirect_uri=
http://localhost:8000/
&scope=<scope>&state<state>&access_type=offline
http://localhost:8000
。使用 fastapi 作为 webhook 来接收消息。捕获授权码,使用google.oauthlib.flow
完成授权过程。接下来,将用户重定向回电报链接 https://t.me/<botname>
目前 PTB 应用程序监听外部更新(本 cas 中的身份验证)确实不是很直接 - 另请参阅此问题。目前,您可能最容易设置一个与
Updater
并行运行的自定义 Webhook 应用程序 - 例如使用flask/django/starlette/fastapi/...。或者,如果您无论如何都在为您的机器人使用 Webhooks,您可以修补 Updater
来为您完成这项工作。尽管这需要一些手动工作 - 请参阅此处查看示例。
一旦您能够监听来自 Google 的更新,就可以通过 PTB 的常用处理程序设置来处理它们,特别是通过
TypeHandler
甚至自定义 Handler
子类 - 请参阅此 FAQ 条目。
关于重定向网址:您需要将用户重定向回您的机器人,因此您必须提供一个链接来执行此操作。
Bot.link
应该可以解决问题。
免责声明:我目前是
python-telegram-bot
的维护者。