如何在 Android 中撤销 Facebook 登录 SDK 的特定(或全部)用户权限
How to revoke specific (or all) user permissions in Android for Facebook Login SDK
我使用的是最新版本的 Facebook SDK(2015 年 5 月)。在用户通过 Facebook 登录 SDK 在 Android 应用程序中登录后,如何以编程方式 revoke/remove 用户的特定权限(或全部)?我在开发人员文档中找到了以下内容,但我不确定如何以编程方式执行此操作。谢谢。
现在使用 Android
的新 4.x.x 版本的 Facebook Sdk 可以轻松撤销权限
需要读取权限
LoginManager.getInstance().logInWithReadPermissions(fragmentoractivity, Arrays.asList("user_likes"));
//multiple
LoginManager.getInstance().logInWithReadPermissions(fragmentoractivity, Arrays.asList("user_likes", "user_friends"));
发布权限
LoginManager.getInstance().logInWithPublishPermissions(fragmentoractivity, Arrays.asList("publish_actions"));
不需要删除或撤销,只要你想撤销它们就要求这样的权限
例如,如果用户拒绝了权限,那么您也可以简单地使用上述命令再次请求权限。
注意:您必须遵守 facebook 政策,例如您必须在询问 fr 权限之前提示用户,或者在用户单击需要访问权限的操作时询问权限。
更新:
如果您想删除权限,请使用 delete 方法执行图形请求
String graphPath="/me/permissions/user_likes";
GraphRequest deletepermission=new GraphRequest(AccessToken.getCurrentAccessToken(), graphPath, null, HttpMethod.DELETE, new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse graphResponse) {
if(graphResponse!=null){
FacebookRequestError error =graphResponse.getError();
if(error!=null){
Log.e(ERRORTAG, error.toString());
}else {
//permission deleted or revoked
}
}
}
});
deletepermission.executeAsync();
//or
deletepermission.executeAndWait()
以上两条命令或类似命令可用于执行图请求
如果您有多个请求,请使用 GraphRequestBatch(查看 fb 文档)
现在您只需要编辑 String graphPath,您可以将 "user_likes" 替换为您想要撤销的权限,或者您可以删除这部分以立即撤销所有权限。
还要确保 HttpMethod.DELETE 需要删除。
我在最新版本的 Facebook Android SDK(图 API 2.0+ 及更高版本)中找到了如何撤销用户权限的解决方案。这是 2015 年 5 月的数据。开发人员需要使用 GraphRequest.newGraphPathRequest() 并设置 GraphPath 并设置 HttpMethod 删除。
public void graphRevokeUserStatusPermission(){
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if(accessToken == null)
return;
GraphRequest request = GraphRequest.newGraphPathRequest(
accessToken,
"/me/permissions/user_status",
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
// response
}
}
);
request.setHttpMethod(HttpMethod.DELETE);
request.executeAsync();
}
如果您想撤销用户访问权限,只需将图表路径更改为
String userId = accessToken.getUserId();
//url to revoke login DELETE {user_id}/permissions
userId + "permissions"
并且不要忘记在 onCompleted 方法调用 LoginManager.getInstance().logOut() 中清除信息,此注销方法不会撤销访问权限,它只会清除令牌和配置文件信息,因此开发人员需要请求 url撤销访问权限
更多信息:
我使用的是最新版本的 Facebook SDK(2015 年 5 月)。在用户通过 Facebook 登录 SDK 在 Android 应用程序中登录后,如何以编程方式 revoke/remove 用户的特定权限(或全部)?我在开发人员文档中找到了以下内容,但我不确定如何以编程方式执行此操作。谢谢。
现在使用 Android
的新 4.x.x 版本的 Facebook Sdk 可以轻松撤销权限需要读取权限
LoginManager.getInstance().logInWithReadPermissions(fragmentoractivity, Arrays.asList("user_likes"));
//multiple
LoginManager.getInstance().logInWithReadPermissions(fragmentoractivity, Arrays.asList("user_likes", "user_friends"));
发布权限
LoginManager.getInstance().logInWithPublishPermissions(fragmentoractivity, Arrays.asList("publish_actions"));
不需要删除或撤销,只要你想撤销它们就要求这样的权限
例如,如果用户拒绝了权限,那么您也可以简单地使用上述命令再次请求权限。
注意:您必须遵守 facebook 政策,例如您必须在询问 fr 权限之前提示用户,或者在用户单击需要访问权限的操作时询问权限。
更新:
如果您想删除权限,请使用 delete 方法执行图形请求
String graphPath="/me/permissions/user_likes";
GraphRequest deletepermission=new GraphRequest(AccessToken.getCurrentAccessToken(), graphPath, null, HttpMethod.DELETE, new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse graphResponse) {
if(graphResponse!=null){
FacebookRequestError error =graphResponse.getError();
if(error!=null){
Log.e(ERRORTAG, error.toString());
}else {
//permission deleted or revoked
}
}
}
});
deletepermission.executeAsync();
//or
deletepermission.executeAndWait()
以上两条命令或类似命令可用于执行图请求 如果您有多个请求,请使用 GraphRequestBatch(查看 fb 文档)
现在您只需要编辑 String graphPath,您可以将 "user_likes" 替换为您想要撤销的权限,或者您可以删除这部分以立即撤销所有权限。
还要确保 HttpMethod.DELETE 需要删除。
我在最新版本的 Facebook Android SDK(图 API 2.0+ 及更高版本)中找到了如何撤销用户权限的解决方案。这是 2015 年 5 月的数据。开发人员需要使用 GraphRequest.newGraphPathRequest() 并设置 GraphPath 并设置 HttpMethod 删除。
public void graphRevokeUserStatusPermission(){
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if(accessToken == null)
return;
GraphRequest request = GraphRequest.newGraphPathRequest(
accessToken,
"/me/permissions/user_status",
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
// response
}
}
);
request.setHttpMethod(HttpMethod.DELETE);
request.executeAsync();
}
如果您想撤销用户访问权限,只需将图表路径更改为
String userId = accessToken.getUserId();
//url to revoke login DELETE {user_id}/permissions
userId + "permissions"
并且不要忘记在 onCompleted 方法调用 LoginManager.getInstance().logOut() 中清除信息,此注销方法不会撤销访问权限,它只会清除令牌和配置文件信息,因此开发人员需要请求 url撤销访问权限
更多信息: