【问题标题】:Using OAuth2 token to authenticate to an API hosted on Google App Engine?使用 OAuth2 令牌对托管在 Google App Engine 上的 API 进行身份验证?
【发布时间】:2015-02-16 20:14:54
【问题描述】:

我正在使用 GAE 为我的 Android 应用构建一个后端,并且我想使用从 Android 应用发送的 Google 帐户对用户进行身份验证。

在 OAuth2 之前,您可以使用从 _ah/login 端点检索到的 Cookie 来验证用户进入您的 Web 应用程序,但该方法已被弃用,我希望能够使用更新后的 OAuth2 方法。

在我的 Android 应用程序中,我已经能够使用以下行生成 JSON Web 令牌:

String jwt =  GoogleAuthUtil.getToken(FamiliarActivity.this, Plus.AccountApi.getAccountName(mGoogleApiClient), "audience:server:client_id:1234567.apps.googleusercontent.com");

或 OAuth 令牌:

String oauth2 =  GoogleAuthUtil.getToken(FamiliarActivity.this, Plus.AccountApi.getAccountName(mGoogleApiClient), "oauth2:server:client_id:1234567.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login");

我可以手动传递给我的 API 并针对 Google 进行验证。但是我还没有找到一种方法来使用这样的令牌来触发 GAE 中的身份验证,就像过去的 Cookie 一样。文档似乎表明将其作为标头传递:Authorization: Bearer <TOKEN> 但这似乎不起作用。

检索令牌并将其传递到我的 GAE 端点以验证用户身份的正确方法是什么?

【问题讨论】:

  • 我知道答案不应该是链接,但无论如何,这是我个人为了更好地了解 App engine + Oauth 2.0 youtube.com/watch?v=HoUdWBzUZ-M 而查看的
  • GAE 没有一个 API 可以让您的用户手动登录(IIRC,它曾经是)?如果是这样,请使用过滤器等实现自定义身份验证,并在验证令牌后调用 API。
  • 另一个想法是将浏览器登录发送的不记名令牌与您从 GoogleAuthUtil 获得的令牌进行比较。这是一种不同的方法,应该可以,但它需要一个完整的帐户访问令牌。它基本上模拟了 Web 登录,然后保存了所有 cookie,因此您可以将它们与后续请求一起发送:github.com/AndlyticsProject/andlytics/blob/dev/src/com/github/…

标签: java android google-app-engine authentication oauth


【解决方案1】:

完成此操作的正确且有记录的方法是:

1) Create 带有

的 OAuth 保护端点
https://www.googleapis.com/auth/plus.login

https://www.googleapis.com/auth/userinfo.email

Android 客户端应用的范围和授权客户端 ID。

2) Generate 客户端库和 integrate 与您的应用程序。

【讨论】:

  • 此答案中的所有 3 个链接均已弃用。
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 2013-06-24
  • 2014-08-14
  • 1970-01-01
  • 2011-01-07
  • 2018-01-11
  • 2017-06-30
  • 1970-01-01
相关资源
最近更新 更多