0

我想让用户登录一次以使用 Google Drive SDK v2,并且不要在每次启动应用程序时询问他。GoogleAccountCredential由于没有实现Serializable并将Parcelable其保存在持久存储中,我该怎么做?如何检查用户是否已登录?

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

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);
4

1 回答 1

0

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

当使用特殊的 Android auth 实用程序使用 Drive 服务时:如果用户已经授权该应用程序,Drive 服务将被授权并按预期工作。如果用户尚未使用 Drive 服务授权应用程序,则将引发包含 Intent 的 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();
于 2013-10-24T11:57:35.433 回答