我在使用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登录页面即可。
我需要更改什么才能完全取消授权访问令牌?或者有不同/更好的方法来做到这一点?非常感谢!
答案 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步