3

我很难找到关于在我的GAE 应用程序中使用 OAuth2 的明确答案。首先,这不是一个端点应用程序,只是一个普通的旧 python 应用程序。

如果在我oauth.get_current_user()的应用程序appid.appspot.com/_ah/OAuth*

因此,我尝试使用 Google 的 OAuth2 端点对我的应用程序进行身份验证,并且我已经获得了访问令牌,但是oauth.get_current_user()我的 GAE 应用程序中的调用总是抛出异常(无效的 OAuth sig)并且从不按预期呈现用户对象。我已经尝试使用各种范围 ( https://www.googleapis.com/auth/userinfo.email& https://www.googleapis.com/auth/appengine.admin) 授权我的应用程序,但这并不重要,因为当我使用 OAuth2 令牌签署请求时,我的 GAE 应用程序从不接受该请求为有效并且oauth.get_current_user()总是抛出异常。

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

4

1 回答 1

7

tl;博士;

在 appengine 代码中试试这个:

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

在过去的一周里,我一直在走同样的路,在模糊的谷歌文档中徘徊。

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

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

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

我尝试使用 [ 3 ] 中的 OAuth2 方法访问 appengine 服务器,但oauth.get_current_user()该方法引发了异常。还尝试了各种范围,希望有一个适合 appengine,结果却失败了。

然而,

从另一个 SO 答案中发现的是该方法的无证使用:

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

将范围作为参数传递。如果消费者已经通过范围的访问令牌,这很有效。

事实证明它毕竟在appengine 代码中。只是没有记录

欢迎改进或更正任何误解。

于 2013-12-07T08:50:38.857 回答