我不确定您要通过您所指的文章中使用的 App Engine OAuthService 来实现什么。还声明 AppEngine OAuthService 仅支持 OAuth 1 但 Android 仅支持 OAuth 2 :) 所以你搞砸了。
如果你想做跨 Android - App Engine 身份验证,我会做的是:
- 在 Android 中:从 AccountManager获取 UserInfo API(范围 =
https://www.googleapis.com/auth/userinfo.email
和)的访问令牌。https://www.googleapis.com/auth/userinfo.profile
- 在您从 Android 向 AppEngine 发出的请求的 URL 参数中将访问令牌传递给 App Engine(确保使用 HTTPS 以避免拦截!)。
- 在 App Engine 端:使用访问令牌通过UserInfo API读取用户的身份。这基本上是使用 OpenID Connect!
- 然后,您可以使用从 UserInfo API 获得的信息对用户进行身份验证。您将从 UserInfo API 获得的电子邮件和用户 ID 等同于您从 AppEngine 的 UserService 获得的电子邮件和用户 ID => 您可以信任它!
PS:我在本文中描述了使用 Android AccountManager 获取 OAuth 2 令牌。它是在冰淇淋三明治之前写的,但我希望它仍然有效。基本上authTokenType
需要oauth2:{scopes}
,例如oauth2:https://www.googleapis.com/auth/tasks
Tasks API。现在可能有一些更好的方法可以做到这一点。