在网站和移动应用上使用Google帐户的SSO

时间:2013-01-08 15:43:33

标签: android authentication single-sign-on google-oauth

我想为我的应用用户使用SSO(单点登录),但我不明白如何将其应用到我的案例中。

总结一下,我们有:

  • 数据库
  • 一个网站
  • iPhone应用程序/ Android应用程序

目前,可以在网站上创建一个帐户,然后使用相同的凭据从移动应用程序进行连接。移动应用和服务器之间的所有通信都通过http请求进行。

简而言之,我首先要

  • 能够使用Google帐户对用户进行身份验证
  • 为Android用户提供选择与其智能手机相关联的Google帐户之一

我找到了几个信息来源:

与我在某些示例中看到的不同,我不需要向Google日历或任务等Google服务发出请求,我只想对用户进行身份验证。

有人可以告诉我在网站和移动应用上需要做什么。我应该在我的数据库中存储信息吗?如何确保在身份验证后,来自移动应用程序的所有http请求都来自经过身份验证的用户?

请不要犹豫,请我澄清一些观点。

提前致谢

1 个答案:

答案 0 :(得分:4)

由于OAuth是授权的标准,而不是身份验证的标准,因此它不支持任何直接方法。但是,大多数提供程序允许您调用返回登录用户的 id 的端点。 Google会将 id 作为基本个人资料信息的一部分返回。您已经提到的the first article中描述了此步骤。有多个库可用于简化此步骤。

因此,为了识别用户,您获取了 Google用户ID ,并将其存储/匹配到您的数据库中。

要在Android设备上获取用户的 id ,有一种更简单的方法。只需使用its documentation中所述的Google Play服务即可。您可以在文档最后一部分的调用响应中找到用户ID

现在仍然存在这样的问题:您必须将用户ID 从设备发送到您的网络服务器并验证您的应用是否已发出此呼叫。幸运的是,Google还为Google Play服务构建了一种方法。 Android开发者博客上有一个关于此问题的blog post by Tim Bray