Facebook 应用程序取消授权:是否存在任何触发事件,通过该事件我可以更新fbsr cookie而无需重新加载页面?

Facebook 应用程序取消授权:是否存在任何触发事件,通过该事件我可以更新fbsr cookie而无需重新加载页面?,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,我的第一篇帖子在这里!:) 情况: 用户授权了应用程序,并且在使用它时,在下一个选项卡中,他将从设置页面删除应用程序(应用程序取消授权) 原因: 我希望通过现有的fbsr cookie授权每个函数调用,其中它的存在是用户登录状态的证明 其他解决办法: 我可以使用在每个画布帖子中传递的签名请求来完成,但我不想混合使用:) 每次调用之前,我都可以通过FB.getLoginStatus()方法刷新登录状态 。。。用数据库条目检查sr中的每个用户\u id(无论如何都必须做什么),这没问题,但不

我的第一篇帖子在这里!:)

情况:

  • 用户授权了应用程序,并且在使用它时,在下一个选项卡中,他将从设置页面删除应用程序(应用程序取消授权)
原因:

  • 我希望通过现有的fbsr cookie授权每个函数调用,其中它的存在是用户登录状态的证明
其他解决办法:

  • 我可以使用在每个画布帖子中传递的签名请求来完成,但我不想混合使用:)
  • 每次调用之前,我都可以通过FB.getLoginStatus()方法刷新登录状态
  • 。。。用数据库条目检查sr中的每个用户\u id(无论如何都必须做什么),这没问题,但不直接;)
    每次您想验证您的用户时,只需检查
    me/permissions

    FB.api('/me/permissions', function(response) {
        var ra = response['data'][0];
        pPublishStream = (ra['publish_stream'] == 1);
        pCreateEvent = (ra['create_event'] == 1);
    
        if (pPublishStream && pCreateEvent) {
            // yay!!!
        }
    });
    

    编辑:回顾过去,我上面的回答解决了您提到的问题,但是也抓住了用户删除应用程序个人权限的情况。所以,这可能不是您想要的。

    我说的“函数调用”是指客户端(RESTful)与服务器的通信。您是说要在服务器上执行检查,而不是在客户端上执行检查?您可以在服务器上执行同样的操作。在PHP中:
    $perms=$facebook->api('/me/permissions')顺便说一句,我宁愿只检查签名的请求,而忽略您关心的案例。大多数用户不会做您描述的事情。