如何使用Android SDK撤销所有Facebook权限?

时间:2012-05-14 13:47:11

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

我在使用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 个答案:

答案 0 :(得分: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}将撤消所有权限

答案 1 :(得分:1)

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

底线:看起来deauth应用程序的唯一方法是让用户直接在Facebook中执行此操作。如果有人知道不同,请说出来 - 但除此之外,不要浪费你的时间尝试!谢谢。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我正在使用问题中建议的代码,它完全取消了我的测试应用程序的授权。经过多次测试,它每一个都有效。

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