【问题标题】:authorize user to use REST API through google services授权用户通过 google services 使用 REST API
【发布时间】:2015-04-20 23:42:17
【问题描述】:

我有三个演员:

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

我希望能够做到的是:

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

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

【问题讨论】:

    标签: android security single-sign-on google-sso


    【解决方案1】:

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

    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 应用程序示例).. .

    希望它对其他人有所帮助。

    【讨论】:

    • 感谢您的跟进。我实际上已经在我的应用程序中解决了这个问题。不确定这是否是最好的方法,但现在可以正常工作。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 2023-03-15
      相关资源
      最近更新 更多