4

我已经设置了由Jquery触发的共享弹出窗口。它的工作原理,但我想使用响应值触发成功的AJAX调用,Facebook只返回一个空数组。为什么FB.UI共享响应什么都不返回?

这里是JavaScript

 

    $("#fb-request").click(function() { 
     FB.ui({ 
      method: 'share', 
      name: 'Check out website', 
      href: 'URL_TO_SHARE', 
     }, 
     function (response) { 
      if (response && !response.error_code) { 
       console.log(response); // Returns: [] 
      } 
     }); 
    }); 

正因为如此,我不能让别人谁的帖子,有人谁使用取消按钮之间的差异。我在这里错过了什么吗? 或者有什么可以在Facebook应用上设置的东西?

感谢,

+1

Tagged:jQuery lol – 2015-09-24 13:32:10

回答

3

documentation

响应数据

参数说明 OBJECT_ID 仅当用户使用Facebook的登录到您的应用程序,并授予publish_actions。如果存在,这是发布的Open Graph故事的ID。

+0

我的疑惑现在已经解决了!这应该被标记为接受的答案。 – andufo 2014-12-20 02:33:50

+1

好吧,我登录FB.login的背景,但这并没有帮助,我仍然得到空的回应 – 2016-02-01 11:33:40

+1

你应该提供登录访问权限,它是这样的: 'function myFacebookLogin(){ FB。 login(function(){},{scope:'publish_actions'}); }' – 2016-02-01 11:54:46

2

如果用户取消了对话框中的份额,响应是不确定的,所以:

$("#fb-request").click(function() { 
    FB.ui({ 
     method: 'share', 
     name: 'Check out website', 
     href: 'URL_TO_SHARE', 
    }, 
    function (response) { 
     if (response && !response.error_code) { 
      if (typeof response != 'undefined'){ 
       //shered 
      } 
     } 
    }); 
}); 
+0

此代码在PC/Android中正常工作,但在iOS上无法使用。 只要用户没有登录到您的应用程序(具有适当的权限),响应的值将始终是一个空数组(不管共享是否发生)。 – 2017-07-02 14:34:10

0

首先检查,如果你的用户连接。

FB.getLoginStatus(function(response) { 
if (response.status === 'connected') { 
    FB.ui(
     { 
      method: 'feed', 
      link: 'your_url', 
      mobile_iframe: true 
     }, 
     function(response){ 
     }); 
} 
else { 
    FB.login(function(response){ 
     FB.ui(
     { 
      method: 'feed', 
      link: 'your_url', 
      mobile_iframe: true 
     }, 
     function(response){ 
     }); 
    }); 
} 

});

0

这对我有用。

FB.ui({ 
    method: 'share', 
    display: 'popup', 
    href: url, 
}, function(response){ 
    if (typeof response != 'undefined'){ 
     alert("shared"); 
    }else{ 
     alert("no shared"); 
    } 
});