如何撤销已授予我的Google云端硬盘网络应用程序的访问权限,以便在用户下次使用时会再次要求他提供权限?
答案 0 :(得分:22)
要撤消访问令牌,您需要“获取”(!)此网址: https://accounts.google.com/o/oauth2/revoke?token= {}记号 其中{token}是令牌的值,如下所述: https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke
对于Java API(不知道其他语言),截至2012年9月9日,没有API。 我设法用这段代码撤销了一个令牌:
class myGoogleApi {
private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
...
public revoke(String token) {
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();
...
}
答案 1 :(得分:7)
如果您破坏了数据库中的所有刷新令牌,则将查询参数approval_prompt = force添加到auth请求将解决该问题。当用户下次批准请求时,它将导致刷新令牌重新发布。
答案 2 :(得分:3)
访问https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en以获取您授予访问权限的应用程序和网站列表。在它们旁边,您将找到一个撤销访问按钮。
访问该页面的说明位于http://support.google.com/accounts/bin/answer.py?hl=en&answer=41236
答案 3 :(得分:2)
答案 4 :(得分: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的访问权限时,应用程序会再次在设备中显示权限窗口。