android - 在网站和移动应用程序上使用 Google 帐户进行单点登录

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

我想为我的应用程序的用户使用 SSO(单点登录),但我不知道如何将它应用到我的案例中。

总而言之,我们有:

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

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

简单来说,我会先

  • 能够使用 Google 帐户对用户进行身份验证
  • 让 Android 用户选择与他们的智能手机关联的 Google 帐户之一

我找到了几个信息来源:

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

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

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

提前致谢

最佳答案

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

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

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

现在仍然存在一个问题,您必须将用户 ID 从设备发送到您的 Web 服务器并验证此调用是由您的应用程序发出的。幸运的是,Google 还在 Google Play Services 中内置了一种方法来应对这种情况。有一个 blog post by Tim Bray在 Android 开发者博客上了解这一点。

关于android - 在网站和移动应用程序上使用 Google 帐户进行单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14218694/

相关文章:

frontend - 如何使用前端/后端架构正确实现 SSO

android - 以编程方式更新android中的联系人姓名和号码

android - Orm Lite - 找不到具有辅助类的单个(上下文)参数的公共(public)构造函数

rest - Keycloak-Oauth-2身份验证流程

single-sign-on - 如何从 shibboleth 注销

node.js - 为什么 '&SAMLRequest' 会附加到我的 ADFS 入口点 URL 中?

android - Android phonegap GPS 精度

java - 使用广播接收器在应用程序之间发送可序列化对象

authentication - 如何向 Mapbox 中 WMS 源的 header 添加基本身份验证

php - 登录和注册系统出现问题。接收和错误