在Drive SDK v.2和Google Drive Android API之间共享凭据

时间:2014-02-05 17:09:43

标签: android google-drive-api google-api-client

这是尝试实施新Google Drive Android API (GDAA)时的又一个陷阱: 我的应用的活动需要GDAA不支持的功能,因此我根据Google Drive SDK v2语句使用原始here

  

在某些情况下,应用可能需要使用Google云端硬盘   服务以访问其他功能或访问更广泛的范围   Google Drive Android API中提供了哪些内容。在这些情况下,   您的应用程序必须使用Google API Client Library for Java。

auth序列是标准的:

...
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE_FILE);
credential.setSelectedAccountName(accountName);
...

DRIVE_FILE范围的身份验证/授权是成功的。

活动B 中,我使用GDAA,完成标准序列

  1. x =新的GoogleApiClient.Builder(this).... build();
  2. x.connect()
  3. onConnectionFailed()
  4. startResolutionForResult()
  5. 这就是出现问题的地方。用户已经在活动A中进行了帐户选择和授权,但GDAA对此一无所知。这会导致再次弹出新的帐户选择对话框。所以问题是:
    有没有办法将初始化的凭证传递给GDAA而不会再次窃听用户(范围相同)?  如果应用程序需要同时使用Google Drive SDK v2和GDAA(可能是任何情况,但最重要的应用程序),不止一次显示帐户选择对话框肯定会是一个显示器。

1 个答案:

答案 0 :(得分:4)

构建新的GoogleApiClient时,您可以明确设置帐户名称。

x = new GoogleApiClient.Builder(this)
       .addScope(Drive.SCOPE_FILE)
       .setAccountName(accountName)...

由于该应用程序已获得该帐户的授权,因此它将自动连接。