【发布时间】:2020-09-27 14:52:46
【问题描述】:
我制作了一个烧瓶/python 网站,可以在用户的谷歌日历上创建和编辑事件。显然,用户必须通过 OAuth2 给予他们的许可(我很难理解,但最终还是成功了)。目前,我正在强制用户注册并登录到我的网站,并且我存储了各种用户设置和附加到他们在我的网站注册时选择的任何用户名的刷新令牌......但现在我希望用户能够允许用户无需注册即可使用我的网站。我仍然想存储用户设置和刷新令牌,但现在我需要某种标签来识别用户,这样当他们回来时我知道是他们(也许他们会从另一台 PC 访问我的网站)。是否有一些字符串可以作为 OAuth2 过程的一部分访问,用于唯一标识用户,或者我是否需要执行一些额外的步骤来获取这样的字符串...
编辑:查看 shox 的评论并查看对this SO question 的最受好评的答案,似乎在 oauth 过程结束时我应该...
发送一个 GET 到 https://www.googleapis.com/oauth2/v3/userinfo,使用 您刚刚收到的 OAuth2 不记名令牌,您将收到回复 包含有关用户的一些信息(id、姓名等)。
不幸的是,我不太确定这意味着什么,也不知道如何在 python 中对其进行编码。我的最佳猜测如下:
r = requests.get( "https://www.googleapis.com/oauth2/v3/userinfo",
params = {'token': credentials.token } )
data = r.json()
但数据原来是{'error': 'invalid_request', 'error_description': 'Invalid Credentials'}
已解决: ...似乎我需要使用字符串“access_token”而不是“token”,现在数据包含电子邮件地址和其他一些零碎的东西。
r = requests.get( "https://www.googleapis.com/oauth2/v3/userinfo",
params = {'access_token': credentials.token } )
data = r.json()
【问题讨论】:
-
不是流程的一部分,而是端点的一部分。对于不同的提供商,这可能会有所不同。看到这个答案:stackoverflow.com/questions/21145560/…
标签: python flask oauth-2.0 google-calendar-api