3

我在使用 Android SDK 撤销 Facebook 权限时遇到问题。

在我的应用程序中有一个案例,我想撤销所有权限。根据 Facebook 文档,您可以使用 AsyncFacebookRunner 来执行此操作,并且“如果您不指定权限,那么这将完全取消对应用程序的授权。”

我目前正在这样做:

String method = "DELETE";
Bundle params = new Bundle();
params.putString("permission", "");

mAsyncRunner.request("/me/permissions", params, method, new RequestListener()
                     { ... }, null);

使用这样的请求签名:

void request(String graphPath, Bundle parameters, final String httpMethod,
             RequestListener listener, final Object state)

onComplete() 回调函数似乎恢复正常,但似乎没有取消对访问令牌的授权。我推断这是因为下次我调用 facebook.authorize() 时,它不会将用户推送到 Facebook 登录页面。

任何想法我需要更改以完全取消授权访问令牌?还是有不同/更好的方法来做到这一点?非常感谢!

4

4 回答 4

3

对于希望在更高版本的 SDK/Graph API 中执行此操作的任何人 - 现在执行此操作的正确方法似乎如下所示https://developers.facebook.com/docs/graph-api/reference/user/permissions /

new Request(
   session,
    "/me/permissions/{permission-to-revoke}",
    null,
    HttpMethod.DELETE,
    new Request.Callback() {
        public void onCompleted(Response response) {
            /* handle the result */
        }
    }
).executeAsync();

离开/{permission-to-revoke}第二个参数将撤销所有权限

于 2014-01-01T05:19:25.600 回答
3

您可以使用最新的 SDK(我的是 4.1.1)从用户 Facebook 帐户中删除整个应用程序(不仅是权限)

void deleteFacebookApplication(){
    new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions", null, HttpMethod.DELETE, new GraphRequest.Callback() {
        @Override
        public void onCompleted(GraphResponse response) {
            boolean isSuccess = false;
            try {
                isSuccess = response.getJSONObject().getBoolean("success");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            if (isSuccess && response.getError()==null){
                // Application deleted from Facebook account
            }

        }
    }).executeAsync();
}
于 2016-01-05T14:25:53.503 回答
1

从这篇文章中可以看出:Facebook 取消我的应用程序和其他应用程序的授权无法以编程方式取消对应用程序的授权。不幸的是,上面的调用成功返回到 onCreate() 但没有为用户删除/删除应用程序。

底线:看起来对应用程序进行认证的唯一方法是让用户直接在 Facebook 中进行。如果有人知道不同,请说出来-否则,请不要浪费时间尝试!谢谢。

于 2012-05-15T01:07:24.680 回答
0

我正在使用问题中建议的代码,它完全取消了我的测试应用程序的授权。对其进行了多次测试,并且每个人都有效。

这也是官方 facebook 文档中建议的代码:https ://developers.facebook.com/docs/mobile/android/build/ - 第 7 步

于 2012-10-01T09:43:55.920 回答