如何在Android上撤销授予Google API权限?

10
8个回答

8

2
那里没有列出我在Android开发中的任何内容,只有我已经授权的网站。 - gdonald
1
@gdonald 我正在寻找完全相同的答案。在IssuedAuthSubTokens下,我也没有看到我的Android应用程序列出。 - Mathias Conradt
https://dev59.com/-2w15IYBdhLWcg3wD3jp - Mathias Conradt

3

重新触发授权页面的两个步骤:

  1. 前往https://accounts.google.com/IssuedAuthSubTokens,撤销您想要取消的应用程序。这将清除服务器端的权限。
  2. 前往您的Android设备设置 ->日期和时间:将时间向前调整一天或两天。这将强制当前令牌过期。

这适用于我的应用程序与Google Drive的连接。在测试时,我将日期固定在快进日期。在单击“撤销访问”并运行授权页面后,它每次都会弹出。 - Tanapruk Tangphianphan

2

您需要通过编程方式撤销令牌。首先,请尝试使用以下链接中发布的示例应用程序: 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" />

如果Eclipse抱怨某些权限仅授予系统,请运行"Clean Project",它将删除警告。完成后,您应该卸载应用并重新启动设备。有关撤销令牌的更多信息,请参阅"Revoking a Token"部分:

https://developers.google.com/accounts/docs/OAuth2WebServer


1
在尝试撤销已授权给我的Android应用程序的Gmail API权限时(仍在调试中),我发现它似乎确实出现在https://security.google.com/settings/security/permissions上,就像@David Waters提到的那样(这是一个新链接,但指向相同的位置),但是 仅当你已正确通过Google Developers Console启用API时。这意味着即使应用程序仍处于开发和调试模式中,也需要正确添加您的OAuth 2.0客户端ID。
有一个非常好的指南,介绍如何在Gmail API网站的Android Quickstart指南中添加凭据(步骤1和2)。

1

0

0

使用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时,应用程序会在设备上再次显示权限窗口。


-5

查看您的AndroidManifest文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接