android - 来自 Android 手机的适用于 Google API 的有效 OAuth

标签 android oauth google-api google-buzz

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

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

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

最佳答案

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

这种方法的缺点是,实际上每次您的应用加载时,它都需要打电话回家以获取最新的访问 token 。但是,一旦获得该访问 token ,它就可以直接对 Buzz 和 Contacts API 进行任何需要的 API 调用。

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

关于android - 来自 Android 手机的适用于 Google API 的有效 OAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6409863/

相关文章:

android 在默认图库查看器中显示图像

c# - Mono.Data.Sqlite.SqliteConnection.SetConfig 抛出一个 Library used incorrectly 异常

session - OAuth 2.0。没有 session ? (无国籍)

php - 如何在 PHP 中使用 google API 计算 google 反向链接

python - 尝试获取 Google 云端硬盘文件夹中的所有文件 ID

android - 如何删除 gridview 单元格中的额外空间 - Android

android - 无法自定义 Actionbar 的向上导航方法

java - 在java中实现Oauth1 Provider

java - 如何使用 Spring Oauth2 将 UserDetails 附加到从 JWT token 接收的主体

android - Google drive android API 无法检索文件内容