【发布时间】: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