6

我正在使用此方法对 Google Drive 进行身份验证: https ://developers.google.com/drive/quickstart-android

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

是否可以使用 Google Play 服务和 GoogleAccountCredential 重新认证?

这是我的场景:

  1. 开始活动
  2. 搜索已保存的凭据
  3. 如果不是 -> 显示帐户选择器(这是有效的)
  4. 如果我选择帐户 - 将凭据保存到首选项。

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

  1. 开始活动
  2. 搜索已保存的凭据
  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);

在哪里:

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

这是行不通的。我从 GoogleJsonResponseExcelption 收到 500 个内部服务器错误。使用适用于 Android 的 Google Play 服务的最佳方法是什么。

4

1 回答 1

8

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

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

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

于 2013-01-17T14:37:14.373 回答