如何在应用启动(Android)之间缓存GoogleAccountCredential?

时间:2013-10-23 13:38:13

标签: android google-drive-api

我想让用户登录一次以使用Google Drive SDK v2,并且每次启动应用时都不要问他。我怎么能这样做,因为GoogleAccountCredential没有实现SerializableParcelable将其保存在持久存储中?如何检查用户是否已登录?

现在我必须要求用户每次启动应用程序时都会登录:

GoogleAccountCredential googleDriveCredential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE_APPDATA);
startActivityForResult(googleDriveCredential.newChooseAccountIntent(), ACTION_LINK_GOOGLE_DRIVE);

我更喜欢在Dropbox Android SDK中完成它:

DbxAccountManager accountManager = DropboxAccountManagerHolder.get().getAccountManager();
if (!accountManager.hasLinkedAccount())
    DropboxAccountManagerHolder.get().getAccountManager()
                    .startLink(this, ACTION_LINK_DROPBOX);

1 个答案:

答案 0 :(得分:0)

似乎是自动完成的:https://developers.google.com/drive/examples/android。 问题是检查它是否已登录。为此,您必须获取凭证令牌并处理异常:

  

使用特殊的Android身份验证实用程序使用云服务时:   如果用户已经授权应用程序Drive服务   将被授权并按预期工作。如果用户没有   授权使用Drive服务的应用程序将抛出一个   UserRecoverableAuthException包含可用于的Intent   向用户显示授权授权对话框。

try {
  GoogleAccountCredential credential =
      GoogleAccountCredential.usingOAuth2(mContext, DriveScopes.DRIVE_FILE);
  credential.setSelectedAccountName(mAccount.name);
  // Trying to get a token right away to see if we are authorized
  credential.getToken();