2015-10-16 116 views
0

我修改了xdamman的优秀选择共享器JQuery库(https://github.com/xdamman/selection-sharer),以使用FB.ui而不是Facebook的/ dialog/feed小部件。这是因为/ dialog/feed小部件和/sharer/sharer.php小部件都不能控制共享链接的链接摘要。所以我用下面的代码:Facebook SDK FB.ui链接分享器:“发生错误,请稍后再试。”

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,但错误“发生错误,请稍后再试。”在主服务器上共享时遇到。

事情我已经尝试:

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.'); 
     } 
    } 
); 

遇到错误:

  • 从Facebook的网站更换用下面的演示代码上面的代码“这个程序是在演示模式下而你不知道没有权限查看它。“

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

  • 添加

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

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

以下重要设置已被用于该应用指定:

  • 应用在公开模式(它们已删除“沙箱” AFAICT)
  • 的应用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”在这种情况下意味着什么,或者它是否有帮助。此问题仅适用于共享者对话框。

预先感谢您。

回答

0

我会非常感兴趣的是,如果有人有解释为什么FB.ui为什么在dev站点上工作,而不是在生产站点上工作。这样的答案对其他人也是非常有用的。

在此期间,如果别人从完全一样的问题的痛苦,我终于又回到使用/对话框/饲料窗口小部件,而不是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

相关问题