我想为我正在使用的网络应用程序使用facebook共享插件,我只需要基本的共享按钮。该应用程序使用requirejs加载javascript,因此我按照how-to并将facebook api url更改为facebook docs上的代码段中找到的URL。这不起作用,并且sdk抛出错误invalid version specified
。这就是我的文件的外观。
main.js
require.config({
shim: {
'facebookshare' : {
exports: 'FB'
}
},
paths: {
'facebookshare': "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0"
}
});
require(['fb']);
fb.js
define(['facebookshare'], function(facebook) {
document.body.innerHTML += '<div class="fb-share-button" data-href="https://developers.facebook.com/docs/plugins/" data-layout="button"></div>';
});
仅将facebook共享插件包含在requirejs中的最佳方法是什么?
我提到了以下问题,但没有一个提供具体的解决方案。 Uncaught error: no version specified和wrong version error。
答案 0 :(得分:94)
即使使用Facebook提供的标准嵌入代码,我也会收到以下错误。
未捕获错误:sdk.js
中指定的版本无效
要检查的第一件事是您在FB.init
电话中包含版本号:
FB.init({
appId: 'your-app-id',
xfbml: true,
version: 'v2.8'
});
...是做一个简单的调整并改变了路径:
From: //connect.facebook.net/en_GB/sdk.js
To: //connect.facebook.net/en_GB/all.js
这解决了错误。不幸的是我不明白为什么。 : - (
答案 1 :(得分:56)
考虑在version
属性中加入src
参数,如下所示:
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8"
Like button for Web上的默认模板不完整;点击“获取代码”按钮后,Facebook将为您生成一个包含version
参数的完整模板。
答案 2 :(得分:6)
小小的抬头,我不得不改变
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1
&
version=v2.8";
到
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1
的 &
强> version=v2.8";
答案 3 :(得分:1)
当我将文件从HTTP更改为HTTPS时,我遇到了这个问题。原因是以下代码中缺少特定的“HTTP:”或“HTTPS:”:
Unable to find version '4.8.0.770-beta' of package 'Lucene.Net'.
通常'//domain.com'会复制我们正在使用的方案,因此当您使用htts://example.com时,指向'//example2.com'的链接将被视为'{{3 }}”。对于'fb-comments',您需要专门为data-href声明HTTP或HTTPS。
另请注意,根据facebook的“https://example2.com”是另一页而不是“https://example.com”。因此,如果您将网站升级为SSL,如果您将社交插件中的URL从HTTP更改为HTTPS,您将丢失所有过去的评论...我选择的解决方案是对所有旧帖子使用HTTP,并为最近的所有内容使用HTTPS
答案 4 :(得分:0)
Facebook Share Button Configurator上的源代码中有(或曾经)错误!页。如果您在页面上使用Share Configurator,它应该可以正常工作。但是,页面上有一个代码示例,上面写着&#39; Copy&amp;将代码示例粘贴到您的网站...&#39;,这是错误的代码,将导致该页面上的按钮不可见。 javascript控制台将显示错误:指定的版本无效&#39;。
我在2018年6月就此问题向Facebook开了一张票。他们承认代码存在问题,并承诺修复代码示例,但截至2018年6月17日,网站上仍然存在错误代码。
希望这会有所帮助。
答案 5 :(得分:0)
我将原始的sdk.js更改为解决了我的问题的all.js:
<div id="fb-root"></div>
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/fr_FR/all.js"></script>
为我仔细更改您的语言,这是法语“ fr_FR”
我从这里获取了原始脚本:https://developers.facebook.com/docs/plugins/page-plugin/