0

当用户通过 Facebook 设置页面撤销对我的应用程序的访问权限时,我正在尝试处理共享到 Facebook 时可能导致的错误。

Facebook 文档说:

但是,请注意,这并不考虑用户可能已撤销对您的应用程序的访问权限或用户已更改其密码的情况。您需要始终注意无效的 access_token 并重定向用户以重新授权您的应用程序。对于无效的访问令牌,在 onComplete() 方法的 'response' 参数中返回以下错误:

我的代码:

facebook.dialog(activity, "feed", params, new DialogListener()
{

    @Override
    public void onFacebookError(FacebookError e)
    {
        Log.printMethod();
        showErrorToast(activity, e);
    }

    @Override
    public void onError(DialogError e)
    {
        Log.printMethod();
        showErrorToast(activity, e);
    }

    @Override
    public void onComplete(Bundle values)
    {
        Log.printMethod();
    }

    @Override
    public void onCancel()
    {   
        Log.printMethod();
    }
});     

问题是这些方法中的任何一个都不会被调用,所以我无法知道用户已经撤销了权限,我需要让他再次授权。

相反,用户会在 webview 中看到类似的内容。有任何想法吗? 在此处输入图像描述

4

1 回答 1

1

首先检查用户的权限: https ://developers.facebook.com/docs/facebook-login/permissions/#checking

休息:

https://graph.facebook.com/USER_ID/permissions?access_token=APP_TOKEN https://graph.facebook.com/me/permissions?access_token=USER_TOKEN

JS:

FB.api('/me/permissions', function(response) {
    var perms = response.data[0];
    if ('publish_actions' in perms && perms.publish_actions === 1) {
        // send
    }
}

示例响应:

{
    "data": [
        {
            "installed": 1,
            "basic_info": 1,
            "email": 1,
            "publish_actions": 1,
            "user_friends": 1
        }
    ]
}
于 2013-10-23T21:07:43.617 回答