android - 我应该在 Android 客户端中验证 OAuth2 token ,还是 App Engine 本身会根据传递给后端 API 的凭据对用户进行身份验证?

标签 android google-app-engine authentication oauth google-cloud-endpoints

我正在创建一个带有 App Engine 后端的 Android 应用程序,并尝试使用 OAuth2 通过 Android 设备上的 Google 帐户对用户进行身份验证,但我无法确定是否需要执行以下所有步骤或者是否仅第 1 步就足够了。

第 1 步:在 this tutorial 中通过 Google,他们使用在设备上找到的 Google 帐户创建了一个 GoogleAccountCredential,并将其传递给 App Engine 上托管的后端 API。

第 2 步:在 this other tutorial 中,只有在 Android 应用程序中获取 OAuth2 访问 token 未返回错误时,他们才通过了此凭据。

第 3 步:在 yet another tutorial 中,已建议后端应检查 Android 客户端发送的 token ,以验证 Google 是否生成了此 token 以及请求 token 的设备是否与后端中的受众值匹配。

所以我的问题是:我们是否真的需要在后端托管在 App Engine 上的 Android 应用程序中执行第 2 步和第 3 步,或者如果我们传递为在电话到后端 API?

另一件事是我应该在我的代码中对应用程序用户进行身份验证的频率和位置: 1.每次端点调用前都需要吗? 2. 或者只在应用程序启动时运行身份验证代码就足够了吗? 3. 或者更好的是,如果仅基于第 1 步进行身份验证就足够了,如果我从 AccountManager 获取用户的 Google 电子邮件地址,将其存储在 SharedPreferences 中并根据存储的电子邮件创建一个 GoogleAccountCredential 是否可以?端点调用,直到用户明确要求注销或切换帐户?

请帮我决定哪种方法最有意义。一如既往,非常感谢您的帮助! :)

最佳答案

上面 Tim 的文章(第 3 步)是正确的。当服务器收到 token 时,它必须验证它是为他们准备的。这是 Google Cloud Endpoints 会为您做的事情,通过配置客户端 ID/受众字段,例如此处的示例:https://developers.google.com/appengine/docs/java/endpoints/auth

关于android - 我应该在 Android 客户端中验证 OAuth2 token ,还是 App Engine 本身会根据传递给后端 API 的凭据对用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373271/

相关文章:

android - 检测穿戴式应用是否正在安装/已安装

java - 我想在连续的噪音响起时激活我的传感器(Android Studio)

google-app-engine - 如何在 Google App Engine 上尽可能快地创建 X 任务

amazon-web-services - AWS Cognito 用户身份验证流程需要建议和建议

php - Laravel 登录一次,可登录多个子域

java - 事后如何添加依赖注入(inject)?

android - 自动从 Android 和 IOS 发送短信

postgresql - 如何将 Google App Engine (Flex) Go 应用程序连接到 Google Cloud Postgres 实例

android - 为安卓开发在线纸牌游戏

mysql - CakePHP 3.x 从 AppController 以外的其他 Controller 启动 Auth 组件给出错误结果