GoogleAccountCredential重新使用auth - Google云端硬盘

时间:2013-01-13 19:38:19

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

我正在使用此方法验证Google云端硬盘: https://developers.google.com/drive/quickstart-android

选择帐户效果很好。现在我想在prefs中存储用户凭据。我可以保存帐户名称,然后将其恢复。我想重用凭据以备将来使用。

是否可以使用Google Play服务和GoogleAccountCredential来实现这一目标?

这是我的情景:

  1. StartActivity
  2. 搜索savedCredentials
  3. 如果不是 - >显示ACCOUNT PICKER(这是有效的)
  4. 如果我选择帐户 - saveCredentians到首选项。
  5. 现在我关闭了我的应用并再次运行。

    1. StartActivity
    2. 搜索savedCredentials
    3. 是 - 已保存凭据。我想用它们。
    4. 我正在尝试这样的事情:

      credential = GoogleAccountCredential.usingOAuth2(GoogleDriveBackup.this, DriveScopes.DRIVE_FILE);
      
      //use saved account (stored[0] is OK)
      credential.setSelectedAccountName(stored[0]);
      credential.getToken();
      service = getDriveService(credential);
      

      其中:

       private Drive getDriveService(GoogleAccountCredential credential) {
              return new Drive.Builder(AndroidHttp.newCompatibleTransport(), 
      new GsonFactory(), credential).build();
            }
      

      这不起作用。我从GoogleJsonResponseExcelption获得了500个内部服务器错误。使用Google Play Services for Android的最佳方法是什么。

1 个答案:

答案 0 :(得分:7)

如果您要做的是避免用户必须重新授权您的应用,那么您不需要保存凭据对象。您需要做的就是保存用户使用帐户选择器选择的帐户。

下次使用您的应用时重新创建凭据对象时,播放服务将知道用户之前已授予您访问权限,您不必显示身份验证意图(在抛出的异常中可用)

您需要为用户提供一种更改其选择的帐户的方式。