【问题标题】:authenticate the user on Android but process on remote server?在 Android 上验证用户但在远程服务器上处理?
【发布时间】:2012-08-23 19:11:45
【问题描述】:

我想为我们的 Android 应用开发一个新选项,允许新用户使用他们的 Google 帐户登录。我们需要检索基本的用户信息(名字、姓氏、出生日期、电子邮件、国家等)并将它们存储在服务器上。它应该只在用户第一次登录应用程序时发生,因此下次按钮所做的所有操作都是简单的身份验证以访问会员区域。

目前,我们的应用程序使用oauth2AccountManager 提示权限,并且可以通过oauth2 api 检索用户信息。我想在我们的服务器上做同样的事情。

所以总结一下就是我正在考虑的流程:

  1. 用户选择使用 Google 登录
  2. 如果他还没有授权应用程序,请求访问他的信息的权限;检索并将它们存储在服务器上并登录。如果他已经授权该应用程序,只需登录即可。

尽管如此,我们仍然需要在他的 Android 设备上保存用户信息的本地副本,以便他可以查看自己的个人资料。

注意:我考虑在我们的服务器上进行数据导入过程的原因是为了加快应用程序的速度并节省一些带宽。但我也觉得用户可能想在保存到服务器之前修改他的数据。

我真的很困惑,oauth2 文档并没有多大帮助。

【问题讨论】:

  • 我想我和你有同样的问题。我希望我的 APK 获得一个令牌,将其发送到我的服务器,然后我的服务器可以向 Google 检查该令牌对于给定的 gmail 地址是否处于活动状态......
  • 我还没有找到关于这个主题的任何好的解决方案或文档。

标签: android oauth-2.0 google-api-java-client


【解决方案1】:

我不明白这个问题。对不起。

只需从 OAuth api 中检索有关客户的信息,通过 HTTP/HTTPS 发布请求将信息发送到服务器,并将其保存在那里。然后将相同的信息保存在手机的 SQLite 数据库中,第一次启动应用后,只需检查 SQLite 中的用户表是否存在客户。

这是一个很棒的例子:http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

【讨论】:

  • 如果用户从另一部手机登录怎么办?还是重新安装应用?
  • 然后客户将登录到两个或多个电话。在那里,您必须提出解决问题的技术。这是一个讨论问题。你可以前。有 GCM 服务,当用户从另一部手机登录时,GCM 注册 ID 会改变。在您更改服务器中的 id 之前,您向以前的手机发送一条消息以从 SQLite 中删除用户。如果重新安装了应用程序,那么如果用户已经注册,则您可以提升用户登录。
【解决方案2】:

为此,您需要遵循 Google 提供的 Cross-Platform single sign-onCross-client Auth 文档。本质上,您的流程应该是:

  1. 检查用户是否已通过身份验证(可能最好作为远程系统的 POST),如果是,请继续您的主要活动。如果没有,请显示登录按钮。
  2. 用户点击登录后,连接 GoogleApiClient,检索当前人员,将其信息保存在设备上(如果需要)。
  3. 通过GoogleAuthUtil.getToken为用户请求一个身份验证令牌。
  4. 将令牌发送到您的 Web 服务器(必须是 https)。在您的网络服务器上,从令牌中检索用户信息,并将其保存到数据库中。

另外,我建议您为您的请求使用持久性 cookie 存储(我更喜欢 loop4j 的 Android Async-HttpClient)。这将使您可以轻松保存会话,因此您不必过于频繁地进行身份验证。

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 2011-04-23
    • 2017-06-25
    • 2015-12-28
    • 2020-01-21
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多