1

我正在尝试从 Android 应用程序获取 Google Buzz、联系人的授权。流程与此类似。

  • 用户选择是否要使用 Buzz。
  • 使用 OAuth/Client Auth,我们需要获得一次性授权码。
  • Web 服务将使用此代码定期读取 Buzz 提要。

现在,问题是我如何从 Android 应用程序获取授权码(不是临时令牌)并将其发送到 web 服务。我可以使用普通的 OAuth2.0 并使用我的 web 服务作为重定向 URL 来获取代码。但在那种情况下,我怎样才能让 web 服务知道代码属于哪个用户?我可以通过 OAuth 舞蹈传递额外信息吗?

4

1 回答 1

1

我强烈建议使用 OAuth 2。流程对最终用户来说要好得多,而且实现这样的东西要容易得多。此外,它使用不记名令牌,这意味着您可以在实际安全的地方维护刷新令牌服务器端,并且仅在需要时将访问令牌发送到 Android。

这种方法的缺点是,每次你的应用程序加载时,它都需要打电话回家以获取最新的访问令牌。但是,一旦拥有该访问令牌,它就可以直接调用 Buzz 和 Contacts API 进行所需的任何 API 调用。

但是,要做到这一点,您不需要通过 OAuth 舞蹈传递额外的信息。相反,您的 Android 应用需要已经安全地识别出使用您的应用登录的用户,然后确保服务器只发回与经过身份验证的用户关联的访问令牌。如果它没有该用户的最新访问令牌,则需要向 Google 的授权服务器发出请求以获取最新的访问令牌,然后将其传递给客户端。因此,肯定存在很大的潜在延迟,因为这通常需要同步调用,但这通常是 OAuth 2 相对于 OAuth 1 为您提供的优势所付出的一小笔代价。

于 2011-06-21T13:06:40.463 回答