1

我有三个演员:

  1. (我的)SSL 背后的 RESTful API。
  2. (我的)具有 Google“登录”按钮的 Android 应用。
  3. (我的)Web 应用程序,允许用户通过 OAuth 使用他们的 Google 帐户进行注册。

我希望能够做到的是:

  1. 当用户在移动设备上登录时生成一些东西。
  2. 将其与我可以在服务器上为该 Google 帐户生成的其他内容进行比较。
  3. 如果这两部分匹配,则为应用程序提供一个新生成的令牌,它可以在一段时间内用于所有后续 API 调用。

我该怎么做呢?我正在阅读 OAuth 文档,但我很难理解这些“东西”和“其他东西”是什么。任何帮助将不胜感激。

4

2 回答 2

2

我不知道你是否还在做这件事,我得到你的任务,范围与你相同,面临同样的问题,在搜索网络(谷歌、堆栈溢出和谷歌开发者文档)之后,我发现了一些东西今天晚上下班后把手放在这可能会帮助其他人在他们的应用程序中实现此功能:

https://developers.google.com/identity/protocols/OAuth2InstalledApp

但这还不够,是一本好书,但根本不能解决我们的问题。

关于这个主题的更有用的读物​​应该是这个(上面写着“这个快速启动应用程序让您在大约 30 分钟内开始在 Android 上使用 Google Identity Toolkit。”):

https://developers.google.com/identity/toolkit/android/quickstart#step_2_configure_the_google_identity_toolkit_api

我尝试过一次,但我的应用程序和 web api 还不够成熟,我会尽快尝试,如果我可以让它按预期工作,我会告诉你(作为典型的 web 应用程序示例)......

希望它对其他人有帮助。

于 2015-08-11T05:44:02.220 回答
1

我已经解决了这个问题,但我不确定这是否是最好的方法。

对于谷歌,我发送我在应用程序中获得的用户 uid 和授权令牌GoogleAuthUtil.getToken()。在服务器上,我转到,我从我的移动应用程序收到的令牌https://www.googleapis.com/oauth2/v1/tokeninfo?fields=user_id&access_token={token}在哪里。{token}如果 OAuth2 响应中的 user_id 与uidAPI 提供的uid匹配,并且与我的数据库中的某些用户记录匹配,则认为该用户已通过身份验证。

对于 Facebook,我做同样的事情,除了我使用session.getAccessToken(...)在应用程序端获取令牌并https://graph.facebook.com/me?fields=id&access_token={token}使用 Facebook 验证它。

于 2015-08-11T12:53:42.223 回答