重新触发授权页面的两个步骤:
您需要通过编程方式撤销令牌。首先,请尝试使用以下链接中发布的示例应用程序: https://developers.google.com/drive/quickstart-android
此示例应用程序显示对话框,让您选择帐户,然后拍照并将其上传到Google Drive。我发现一个重要的问题是,这个示例应用程序最终会失败。我发现应用程序的相机部分会导致崩溃。因此,请禁用代码中的相机部分,并将文件替换为SD卡上的某些文件,然后将文件上传到Drive。
要撤销使用Drive的权限,您需要执行以下代码:
String token = credential.getToken();
HttpRequestFactory factory = HTTP_TRANSPORT.createRequestFactory();
GoogleUrl url = new GoogleUrl("https://accounts.google.com/o/oauth2/revoke?token=" + token);
HttpRequest request = factory.buildGetRequest(url);
HttpResponse response = request.execute();
<uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
无法通过任何公共的、官方的API实现。
请参见:
即使卸载并重新安装应用程序也无济于事。
在已经root的设备上可能是这样的: 如何强制AccountManager在用户已经允许访问后显示“访问请求”屏幕?
您可以在...上撤销账户权限。
https://security.google.com/settings/security/permissions
你可以通过【账户设置】>【账户权限】到达那里。
证明这个答案是真的:
使用Google Play服务:
http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html
将https://www.googleapis.com/auth/userinfo.profile添加到您的范围中。
示例:
String scope="oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
final String token = GoogleAuthUtil.getToken(context, "xxxx@gmail.com", scope);
或者“暴力破解”
Intent res = new Intent();
res.addCategory("account:xxxx@gmail.com");
res.addCategory("scope:oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile");
res.putExtra("service", "oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile");
Bundle extra= new Bundle();
extra.putString("androidPackageName","com.your.package");
res.putExtra("callerExtras",extra);
res.putExtra("androidPackageName","com.your.package");
res.putExtra("authAccount","xxxx@gmail.com");
String mPackage = "com.google.android.gms";
String mClass = "com.google.android.gms.auth.TokenActivity";
res.setComponent(new ComponentName(mPackage,mClass));
startActivityForResult(res,100);
现在,当您在此处撤销访问https://accounts.google.com/IssuedAuthSubTokens时,应用程序会在设备上再次显示权限窗口。
查看您的AndroidManifest文件。