获取可与服务器共享的OAuth2授权代码

时间:2013-05-23 22:10:03

标签: android oauth-2.0 google-drive-api google-oauth

我的Android应用需要向我的服务器发送授权码,以便服务器可以使用该代码获取用户的Google云端硬盘帐户的访问令牌。我一直在试图弄清楚如何获取授权码,我在Google API文档中发现了这一点(Using OAuth 2.0 for Installed Applications):

  

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

     

收到授权码后,应用程序可以进行交换   访问令牌和刷新令牌的代码。应用程序   提供其client_id和client_secret(在应用程序期间获得)   注册)和交换期间的授权代码。上   收到刷新令牌后,应用程序应将其存储起来   未来的使用。访问令牌使您的应用程序可以访问Google   API。

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

那么如何获取可与服务器共享的授权代码?如果有可能,我会非常感谢一些示例代码。如果不可能,可能的解决方法是什么?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

我相信您实际上可以获取Android AccountManager返回的访问令牌,将其发送到您的服务器,然后让您的服务器使用相同的访问令牌对Google Drive API进行调用 - 它是一个不记名令牌并且不受约束对于创建它的频道,所以请妥善保管,只能通过加密连接发送。

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

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