Facebook SDK FB.ui Link Sharer:“发生错误。请稍后再试。”

时间:2015-10-16 09:33:15

标签: facebook-sharer fb.ui

我修改了xdamman优秀的选择共享JQuery库(https://github.com/xdamman/selection-sharer)以使用FB.ui而不是facebook的/ dialog / feed小部件。这是因为/ dialog / feed小部件和/sharer/sharer.php小部件都无法控制共享链接的链接摘要。所以我使用了以下代码:

  FB.ui(
    {
      method: 'feed',
      name: name, // (e.g. "Interesting News Item")
      link: self.url2share, // (the current URL as determined by window.location.href, e.g. "https://www.commonspace.scot/articles/2688/poll-snp-support-surges-further-with-months-to-go-before-scottish-elections")
      picture: picture, // (e.g. "https://www.commonspace.scot/public/artarticle/a3/41/4162_6493.jpg?c=64a2);%20?%3E")
      caption: 'commonspace.scot',
      description: text // (arbitrary text string)
    },
    function(response) {
      if (response && response.post_id) {
        //alert('Post was published.');
      } else {
        //alert('Post was not published.');
      }
    }
  );

FB.ui初始化如下:

window.fbAsyncInit = function() {
  FB.init({
    appId      : '1011782388842782',
    xfbml      : true,
    version    : 'v2.4'
  });
};

现在这里是真正的踢球者 - 上面的代码在https://dev.commonspace.scot从开发服务器运行时运行 JUST FINE 但错误“发生错误。请稍后重试。”在主服务器上共享时遇到。

我尝试过的事情:

  • 使用Facebook网站上的以下演示代码替换上述代码:

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

    遇到错误:“此应用处于演示模式,您无权查看。”

  • 用预定义的虚拟文本替换所有动态生成的字符串(name,link2share,picture,description)。遇到错误:“应用程序配置不允许给定URL:应用程序的设置不允许使用一个或多个给定的URL。它必须与网站URL或Canvas URL匹配,或者域必须是其中一个的子域应用程序的域名。“

  • 添加

    redirect_uri:'https://www.commonspace.scot',

作为FB.ui的参数。结果:“发生错误。请稍后再试。”

为应用指定了以下重要设置:

  • 应用程序处于已发布模式(他们已删除了“沙盒”)
  • 使用元标记设置应用ID:

     <meta property="fb:app_id" content="1011782388842782" />
    

...并且共享者库知道应用程序ID。

  • 已为应用设置了显示名称和联系电子邮件。
  • 指定了三个app域:commonspace.scot,dev.commonspace.scot,www.commonspace.scot;虽然我也尝试过只有一个域(commonspace.scot)。
  • 网站网址设为“https://www.commonspace.scot/”。

重要提示:这些错误非常通用,并且会在Facebook SDK的大部分内容中显示。到目前为止,我所看到的大多数答案,包括stackoverflow,都与SDK的其他部分有关,例如: OAuth在这些特定错误中尤为常见。我不清楚,如果有的话,那里适用的答案如何适用于此。我已经尝试了各种这样的解决方案,但不清楚,选择一个特定的,“回调URI / URL”在这种情况下意味着什么,或者它是否会有所帮助。此问题仅适用于“共享者”对话框。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我很想知道是否有人解释为什么FB.ui在开发网站上工作但不在生产网站上工作。这样的答案对其他人也非常有用。

与此同时,如果其他人遇到完全相同的问题,我最终还是使用/ dialog / feed小部件而不是FB.ui进行了以下更改:

  var url = 'https://www.facebook.com/dialog/feed?' +
            'app_id='+self.appId +
            '&display=popup'+
            '&picture='+encodeURIComponent(picture)+
            '&caption='+document.domain+
            '&name='+encodeURIComponent(name)+
            '&description='+encodeURIComponent(text)+
            '&link='+encodeURIComponent(self.url2share)+
            '&href='+encodeURIComponent(self.url2share)+
            '&redirect_uri='+encodeURIComponent(self.url2share);

您可以使用我的前叉https://github.com/djcf/selection-sharer

查看完整的来源,或自己使用该库