我正在编写一个使用Google Drive API的Android应用程序。如果用户选择将应用程序与其Google驱动器同步,则我正在使用Drive.SCOPE_APPFOLDER放置私有位置来存放我的应用程序数据。大部分情况下一切正常,我可以将内容同步到Google驱动器。但是,我在初始化方面遇到很大的困难。首先,我可以识别用户何时未使用Google驱动器并启动登录活动。这是我建立Google登录客户端的方法。我实际上不认为我需要.requestEmail()和.requestProfile(),但目前为止。
private GoogleSignInClient buildGoogleSignInClient(AppCompatActivity activity) {
GoogleSignInOptions signInOptions =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(Drive.SCOPE_APPFOLDER)
.requestEmail()
.requestProfile()
.build();
return GoogleSignIn.getClient(activity, signInOptions);
}
要识别出用户尚未登录Google云端硬盘或未将其与应用程序一起使用,我有以下代码。
private void initGoogleClient() {
mGoogleSignInAccount = GoogleSignIn.getLastSignedInAccount(getActivity());
if (mGoogleSignInAccount == null) {
launchSigninActivity(getActivity());
} else {
mDriveResourceClient = Drive.getDriveResourceClient(getActivity().getApplicationContext(), mGoogleSignInAccount);
//.... doing stuff here that works fine
}
}
要启动登录活动,我需要以下代码。
private void launchSigninActivity(AppCompatActivity activity) {
mGoogleSignInClient = buildGoogleSignInClient(activity);
Intent signinIntent = mGoogleSignInClient.getSignInIntent();
activity.startActivityForResult(signinIntent, SIGNIN_INTENT_CODE);
}
现在可以很好地启动登录活动,用户可以登录其Google帐户。但是,无论何时显示Google UI来登录用户,都会抛出错误代码code = 8 INTERNAL_ERROR。如果用户以前使用我的应用程序之前已登录其驱动器帐户,则不会引发错误代码8。
public void handleSignIn(int requestCode, int resultCode, Intent data) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
mGoogleSignInAccount = task.getResult(ApiException.class);
mDriveResourceClient = Drive.getDriveResourceClient(getActivity().getApplicationContext(), mGoogleSignInAccount);
//... other App specific stuff
} catch (ApiException e) {
Log.w(TAG, "************* signInResult:failed code=" + e.getStatusCode());
}
}
(我的活动中的onActivityResults()调用上面的代码)getActivity()方法仅返回处理onActivityResults()的活动。
我注意到的第二个问题是,首次在我的应用中使用GoogleResourceClient时,存在一些计时问题。最初几次尝试读取驱动器时,它似乎是空的,但有时会显示远程文件。我还没有描述读取查找文件需要多长时间,但是似乎驱动器API在初始/首次使用应用程序调用时对远程驱动器的任何调用之前都已返回。
这些问题仅在首次使用Android应用程序时发生。该应用程序的所有后续启动均运行平稳。有人对这些问题有任何想法吗?
答案 0 :(得分:0)
Google已弃用该库。移动Google Drive REST API。