2

我无法运行 Facebook UI 回调。我使用了来自 FB 开发网站的示例:

https://developers.facebook.com/docs/reference/dialogs/feed/

FB.init({appId: "YOUR_APP_ID", status: true, cookie: true});

function postToFeed() {

    // calling the API ...
    var obj = {
      method: 'feed',
      redirect_uri: 'YOUR URL HERE',
      link: 'https://developers.facebook.com/docs/reference/dialogs/',
      picture: 'http://fbrell.com/f8.jpg',
      name: 'Facebook Dialogs',
      caption: 'Reference Documentation',
      description: 'Using Dialogs to interact with users.'
    };

    function callback(response) {
      document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
    }

    FB.ui(obj, callback);
}

当我在我的网站上运行它时,我没有收到回调 https://www.ipassexam.com/page/fb-test

任何见解将不胜感激。

4

6 回答 6

4

摆脱 redirect_uri 参数。这对我每次都有效:

FB.ui({
    method: 'feed',  
    link: "http://...",
    name: "Some Title",
    caption: "Some Caption",
    description: "Some Description",
    picture: "http://..."
}, function(response) {
    if (response && response.post_id) {
        alert('Post was published.');
    } else {
        alert('Post was not published.');
    }
});

还要确保控制台中没有错误。但无论如何我没有看到任何错误。

于 2012-12-30T23:38:51.350 回答
2

花了 2 个小时解决问题,解决方案是,提及显示属性(在我的情况下是弹出窗口)。

function postToFeed() {

// calling the API ...
var obj = {
  method: 'feed',
  **display: 'popup',**
  link: 'https://developers.facebook.com/docs/reference/dialogs/',
  picture: 'http://fbrell.com/f8.jpg',
  name: 'Facebook Dialogs',
  caption: 'Reference Documentation',
  description: 'Using Dialogs to interact with users.'
};

function callback(response) {
  document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
}

FB.ui(obj, callback);

}

提示:如果 display 被明确指定为 popup,redirect_uri 不是强制性的。

于 2013-02-13T18:52:04.560 回答
1

尝试使用“popup”设置显示属性,请求如下:

FB.ui({
    method: 'feed',  
    link: "http://...",
    name: "Some Title",
    caption: "Some Caption",
    description: "Some Description",
    display: "popup",
    picture: "http://..."
}, function(response) {
    if (response && response.post_id) {
        alert('Post was published.');
    } else {
        alert('Post was not published.');
    }
});

当我尝试使用 feed 方法发布时,我在 FB 画布页面中遇到了这个问题,我总是得到“未定义”的响应。我已经尝试了上述属性,现在它正在工作。

于 2016-01-27T09:07:26.987 回答
0

尝试在之前添加这个FB.init

window.fbAsyncInit = function() { //put FB.init here }

 (function(d){
   var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = '//connect.facebook.net/en_US/all.js';
   ref.parentNode.insertBefore(js, ref);
 }(document));

才会变成这样

window.fbAsyncInit = function() {
 FB.init({appId: "YOUR_APPID", status: true, cookie: true});
};

(function(d){
   var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = '//connect.facebook.net/en_US/all.js';
   ref.parentNode.insertBefore(js, ref);
 }(document));
于 2013-04-19T02:03:55.560 回答
0

也许您应该尝试使用匿名函数作为回调 -

FB.ui(obj, function(response) {
  document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
});
于 2012-12-30T22:05:48.340 回答
0

可能不是你的情况,但我几乎一周都在寻找类似行为的原因,最后我发现 FB.ui 试图创建 iframe 以显示在页面上,为此在 div 下创建了这个 iframe id=fb-root。不幸的是,这个 div 位于另一个 div 中,我自己将其设为不可见!所以 - 长话短说 - 检查你是否有 id=fb-root 的 div 以及这个 div 是否可见

于 2018-07-13T15:25:44.763 回答