【问题标题】:Facebook SDK FB.ui Link Sharer: "An error occurred. Please try again later."Facebook SDK FB.ui Link Sharer:“发生错误。请稍后再试。”
【发布时间】:2015-10-16 18:56:56
【问题描述】:

我已经修改了 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 的开发服务器上运行时很好,但错误“发生错误。请稍后再试”。每当在主服务器上共享时都会遇到。

我尝试过的事情:

  • 将上述代码替换为 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.');
          }
        }
      );
    

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

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

  • 添加

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

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

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

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

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

...共享库知道应用 ID。

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

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

提前谢谢你。

【问题讨论】:

    标签: facebook-sharer fb.ui


    【解决方案1】:

    我很想知道是否有人解释了为什么 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);
    

    您可以查看完整的源代码,或者自己使用库,使用我的 fork https://github.com/djcf/selection-sharer

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多