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

ade*_*dek 5 android credentials oauth-2.0 google-drive-api

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

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

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

这是我的情景:

  1. StartActivity
  2. 搜索savedCredentials
  3. 如果不是 - >显示ACCOUNT PICKER(这是有效的)
  4. 如果我选择帐户 - saveCredentians到首选项.

现在我关闭我的应用程序并再次运行.

  1. StartActivity
  2. 搜索savedCredentials
  3. 是 - 已保存凭据.我想用它们.

我正在尝试这样的事情:

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

//use saved account (stored[0] is OK)
credential.setSelectedAccountName(stored[0]);
credential.getToken();
service = getDriveService(credential);
Run Code Online (Sandbox Code Playgroud)

哪里:

 private Drive getDriveService(GoogleAccountCredential credential) {
        return new Drive.Builder(AndroidHttp.newCompatibleTransport(), 
new GsonFactory(), credential).build();
      }
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*ier 7

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

在下次使用您的应用程序时重新创建凭据对象时,播放服务将知道用户之前已授予您访问权限,您不必显示auth Intent(在抛出的Exception中可用).

您确实需要为用户提供一种更改其选择的帐户的方法.