如何在Android登录SDK中撤消特定(或所有)用户权限

时间:2015-05-14 08:02:30

标签: android facebook facebook-graph-api facebook-login facebook-android-sdk

我使用的是最新版本的Facebook SDK(2015年5月)。在用户通过Android应用程序中的Facebook登录SDK登录后,如何以编程方式撤消/删除用户的特定权限(或全部)?我在开发人员文档中找到了以下内容,但我不确定如何以编程方式执行此操作。谢谢。

enter image description here

2 个答案:

答案 0 :(得分:4)

使用适用于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权限之前提示用户,或在用户点击需要访问权限的操作时请求权限。

更新

如果要删除权限,请使用方法删除

执行图形请求
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。

答案 1 :(得分:4)

我找到了如何在最新版本的Android Android SDK(Graph API 2.0+及更高版本)中撤销用户权限的解决方案。这是2015年5月。开发人员需要使用 GraphRequest.newGraphPathRequest()并设置 GraphPath 并将 HttpMethod 设置为DELETE。

LoadWebImageToPictureBox(ImagePreview, SelectedFile)

如果您想要撤消用户访问权限,只需将图形路径更改为

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();
    }

并且不要忘记在调用Facebook Permissions Revoking的onCompleted方法中清除信息,这个注销方法不会撤销访问权限,它只是清除令牌和配置文件信息,因此开发人员需要请求url撤消访问权限

更多信息:

{{3}}