-2

好的,我做了一个代码,它显示发生错误。请稍后在弹出窗口出现时尝试,并在 colsole 中显示:undefined at "function callback(response) { console.log(response); }"

这是代码:

<script>
function postToFeed() {
  // call the API
  var obj = {
    method: 'feed',
    link: 'https://apps.facebook.com/assault_combat/takegift',
    picture: 'https://flyandsmash.herokuapp.com/images/Gift.png',
    name: 'Take a gift from Assault Combat',
    caption: 'https://apps.facebook.com/assault_combat/',
    actions: [
      {'name': 'Get Gift', 'link': 'https://apps.facebook.com/assault_combat/takegift'}
    ],
    description: 'Action links are awesome.'
  };

  function callback(response) {
    console.log(response);
  }

  FB.ui(obj, callback);
}

</script>

顺便说一句,当我输入“FB.init 和其他东西时,它也说错误......(我已经导入了 div fb 根和东西)

4

1 回答 1

3

始终使用异步方式加载 JavaScript SDK:https ://developers.facebook.com/docs/javascript/quickstart

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : '{your-app-id}',
      status     : true,
      xfbml      : true
    });

    //earliest possibility to use FB
  };

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

关于错误:您在 obj 中添加的所有链接都无法访问,这可能是主要问题。此外,标题不能有和 URL,但它仍然可以使用,因为 Facebook 只是将其删除。最好尝试使用更少的参数,删除操作并尝试不使用。

我也会在没有嵌套函数的情况下编写它:

<script>
function callback(response) {
  console.log(response);
}

function postToFeed() {
  // call the API
  var obj = {
    method: 'feed',
    link: 'https://apps.facebook.com/assault_combat/takegift',
    picture: 'https://flyandsmash.herokuapp.com/images/Gift.png',
    name: 'Take a gift from Assault Combat',
    caption: 'https://apps.facebook.com/assault_combat/',
    actions: [
      {'name': 'Get Gift', 'link': 'https://apps.facebook.com/assault_combat/takegift'}
    ],
    description: 'Action links are awesome.'
  };

  FB.ui(obj, callback);
}
</script>

确保在初始化 SDK 之后调用“postToFeed”,并且始终在用户交互/鼠标事件上调用。如果您不在用户事件中使用它,浏览器可能会阻止弹出窗口。

于 2013-04-06T16:25:53.297 回答