7

我的 Android 应用程序需要向我的服务器发送一个授权代码,以便服务器可以使用它来获取用户 Google Drive 帐户的访问令牌。我一直在试图弄清楚如何获取授权码,我在 Google API 文档中找到了这一点(使用 OAuth 2.0 for Installed Applications):

此序列首先将浏览器(系统浏览器或作为 Web 视图嵌入应用程序)重定向到具有一组查询参数的 Google URL,这些参数指示应用程序所需的 Google API 访问类型。与其他场景一样,Google 处理用户身份验证和同意,但序列的结果是授权码。授权码在浏览器的标题栏中或作为查询字符串参数返回(取决于请求中发送的参数)。

应用程序收到授权码后,可以用该码交换访问令牌和刷新令牌。应用程序在此交换期间显示其 client_id 和 client_secret(在应用程序注册期间获得)和授权代码。收到刷新令牌后,应用程序应将其存储以备将来使用。访问令牌使您的应用程序可以访问 Google API。

现在我不确定如何在我的 Android 应用程序中获取此授权代码,因为我看到的 Android 示例似乎直接获取了访问令牌。我正在查看 Android AccountManager 类,它有一个方法 getAuthToken 但这似乎是指访问令牌而不是授权代码。

那么如何获取可以与服务器共享的授权码呢?如果可能的话,我将不胜感激一些示例代码。如果这是不可能的,可能的解决方法是什么?

4

2 回答 2

5

您可能需要查看Cross-client Identity文档。它应该使您无需来回传递用户令牌。

于 2013-05-24T00:20:32.550 回答
0

我相信您实际上可以获取 Android AccountManager 返回的访问令牌,将其发送到您的服务器,然后让您的服务器使用相同的访问令牌对 Google Drive API 进行调用 - 它是一个不记名令牌,不绑定到通道创建它,所以请好好照顾它,只通过加密连接发送。

可以在此处找到有关如何获取该访问令牌的文档: https ://developers.google.com/drive/quickstart-android

虽然该访问令牌适合立即使用,但它将在不到 1 小时内过期,因此,如果您正在寻找一种解决方案,使您的后端服务器能够继续访问云端硬盘数据,而无需用户出现在您的应用程序请求时,将需要另一种方法。

于 2013-05-24T00:01:19.900 回答