加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – oauth.get_current_user()可以与OAuth2一起使用吗?

发布时间:2020-12-20 11:31:23 所属栏目:Python 来源:网络整理
导读:我很难找到关于在我的GAE应用程序中使用OAuth2的明确答案.首先,这不是一个端点应用程序,只是一个普通的老 python应用程序. 如果在我的应用程序中使用OAuth端点(appid.appspot.com/_ah/OAuth*),我可以获得oauth.get_current_user()方法以在需要时返回经过身份
我很难找到关于在我的GAE应用程序中使用OAuth2的明确答案.首先,这不是一个端点应用程序,只是一个普通的老 python应用程序.

如果在我的应用程序中使用OAuth端点(appid.appspot.com/_ah/OAuth*),我可以获得oauth.get_current_user()方法以在需要时返回经过身份验证的用户,但这是使用OAuth1,已弃用 – Google的开发文档非常清楚.

所以我尝试使用Google的OAuth2端点来验证我的应用程序,并且我已经获得了访问令牌,但是我的GAE应用程序中的oauth.get_current_user()调用总是抛出异常(无效的OAuth sig),并且在预期时永远不会呈现User对象.我已尝试使用各种范围授权我的应用程序(https://www.googleapis.com/auth/userinfo.emailu0026hd; https://www.googleapis.com/auth/appengine.admin),但它没有当我使用OAuth2令牌签署请求时,我的GAE应用程序从不接受请求为有效,oauth.get_current_user()始终抛出异常.

所以我的问题是,在使用OAuth2令牌签署请求时,我是否应该能够在我的GAE应用程序中使用oauth.get_current_user()调用?如果是这样,我必须授权哪些范围访问GAE应用程序?

解决方法

TL;博士;

在appengine代码中尝试这个:

from google.appengine.api import oauth
oauth.get_current_user(SCOPE)

过去一周我一直走在同样的道路上,在模糊的谷歌文件中徘徊.

我最后的理解是,AppEngine从未正式进入OAuth2领域.您在整个Google API文档中看到了这些“OAuth1已被弃用”的消息,但在appengine文档中它实际上很安静.它谈论OAuth,但没有谈论哪个版本.

这是我认为当前状态的情况(截至2013-12-07):

> [1] Authorizing into appengine with OAuth:* .appspot.com / _ah /方法.不说哪个版本.可能只有1.0.
> [2] Google API Authorization:所有OAuth2大惊小怪,但它是关于请求其他Google API,而不是关于appengine.
> [3] Google accounts authentication with OAuth 2.0:使用常规Google帐户登录.不幸的是,appengine不包括在范围内.

还有另一个文档讨论OAuth 2.0 on appengine,但它是关于从appengine服务器调用Google API,而不是登录它.

我在[3]中尝试使用OAuth2方法访问appengine服务器,但是oauth.get_current_user()方法引发了异常.也尝试了各种范围,希望一个适合appengine,只有失败.

然而,

我在from another SO answer中发现的是该方法的未记录使用:

oauth.get_current_user('https://www.googleapis.com/auth/userinfo.email')

将范围作为参数传递.如果消费者已经使用范围传递了访问令牌,这就有效.

事实证明它毕竟是在appengine code.它不是documented.

欢迎对任何误解进行改进或更正.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读