【问题标题】:Facebook UI,Popup shows An error occurred. Please try later [closed]Facebook UI,弹出窗口显示发生错误。请稍后再试[关闭]
【发布时间】:2013-04-05 11:54:44
【问题描述】:

好的,我做了一个代码,它显示发生错误。请稍后在弹出窗口时尝试,并在 colsole 中显示:未定义在“函数回调(响应){ 控制台日志(响应); }"

代码如下:

<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 根和东西)

【问题讨论】:

  • 你能把你导入javascript sdk和东西的代码贴出来

标签: javascript facebook post sdk


【解决方案1】:

始终使用异步方式加载 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”,并且始终在用户交互/鼠标事件上调用。如果您不在用户事件中使用它,浏览器可能会阻止弹出窗口。

【讨论】:

  • 与其否决我的答案(这肯定是正确的)并且只是说“它不起作用”,不如告诉我你到底得到了什么错误。假设是你,因为同一时间?
  • 错误是一样的。问题是,为了使用您必须拥有的提要和应用程序,您应该首先使用 FB.init,并且您在 fb 应用程序设置中的回调应该与您当前使用的相同。我投了反对票,因为它没有帮助我,我认为这就是反对票的原因。
  • 这正是我写“始终使用异步方式加载 JavaScript SDK”的原因,我包含了指向 facebook 文档的链接以使其更清晰。显然,如果您在加载 SDK 之前立即调用“postToFeed”,这将不起作用,但无论如何您都应该只在用户交互时这样做。
  • 请不要仅仅因为它没有帮助您解决不同的问题而投反对票,如果您知道这是一个错误的答案,请仅使用投反对票。事实并非如此 ;) - 话虽如此,如果您遇到类似问题,我很乐意提供帮助。
  • 我已经包含了正确的初始化代码,现在应该涵盖所有初始化问题。
猜你喜欢
  • 2013-01-09
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多