使用fb.ui时如何检测用户取消的共享

时间:2014-05-27 08:30:19

标签: javascript facebook

我使用here提供的文档,并使用以下代码。共享对话框正确显示。问题是我无法区分"取消"和"发布"用户对该对话框执行的操作。我想这会是回应的一部分。

FB.ui({
    method: 'share',
    href: 'https://developers.facebook.com/docs/',
}, function(response){
    if (response && !response.error_code) {
        console.log(response);
    } else {
        alert('Error while posting.');
    }
});

编辑:来自控制台的输出并不提供任何了解方式

Cancel - Object {e2e: "{"submit_0":1401181811121}"} 
Post - Object {e2e: "{"submit_0":1401181815112}"} 

4 个答案:

答案 0 :(得分:4)

我对此进行了测试,显然在response对象中有一些信息可用于确定对话框是否被取消。

代码

FB.ui({
    method: 'share',
    href: 'https://developers.facebook.com/docs/'
}, function(response){
    if (response && !response.error_code) {
        console.log("OK: "+JSON.stringify(response));
    } else {
        console.log("Not OK: "+JSON.stringify(response));
    }
});

取消后的输出:

{error_code: 4201, error_message: "User+canceled+the+Dialog+flow", e2e: "{"submit_0":1401188820613}"} 

所以,我想你可以检查这样的取消:

FB.ui({
    method: 'share',
    href: 'https://developers.facebook.com/docs/'
}, function(response){
    if (response && !response.error_code) {
        console.log("OK: "+JSON.stringify(response));
    } else if (response && response.error_code === 4201) { //Cancelled
        console.log("User cancelled: "+decodeURIComponent(response.error_message));
    } else {
        console.log("Not OK: "+JSON.stringify(response));
    }
});

不幸的是,FB.Events.subscribe()没有为此对话框的Cancallation提供事件:https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/v2.0

答案 1 :(得分:2)

这是故意阻止开发人员使用帖子作为门控机制。应由用户选择是否发布,不应该是应用程序的要求。

答案 2 :(得分:2)

使用" feed"方法而不是"分享"因此,它不需要应用程序权限才能获得响应。

FB.ui({
    method: 'feed',
    caption: 'My Caption',
    link: 'http://www.google.com/'
}, function(response) {
    if (response && response.post_id) {
        alert('Thank you for sharing!');                
    } else {
        alert('You have cancelled the share.');
    }
});

答案 3 :(得分:1)

我的响应函数也有问题,我正在编码并尝试使用fb.UI

    return FB.ui({
      method: 'share',
      href: this.shareUrl,
      hashtag: "myHashTag",
      quote: "myQuote"
    }, function(res) {
      console.log("res = ", res);
      console.log("res? = ", res != null);
      return App.vent.trigger("FBShareView:cancelled");
    });

我发现在成功共享上,res是一个空数组,res!= null为真

我发现对于取消方案,res未定义。

我希望将res视为具有error_message的对象,如下所述:https://developers.facebook.com/docs/sharing/reference/share-dialog

你能告诉我可能出现的问题吗?