【问题标题】:Invalid version specified, facebook share plugin error指定的版本无效,facebook 分享插件错误
【发布时间】:2014-12-23 13:16:47
【问题描述】:

我想为我正在开发的网络应用程序使用 facebook 分享插件,我只需要基本的分享按钮。该应用程序使用 requirejs 来加载 javascript,因此我遵循 how-to 并将 facebook api url 更改为在 facebook docs 上的代码 sn-ps 中找到的那个。这不起作用,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>';
});

使用 requirejs 仅包含 facebook 分享插件的最佳方式是什么?

我提到了以下问题,但没有一个提供具体的解决方案。 Uncaught error: no version specifiedwrong version error

【问题讨论】:

    标签: javascript facebook requirejs facebook-javascript-sdk


    【解决方案1】:

    即使在使用 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 更新嵌入代码以使 all.js 而不是 sdk.js 也对我有用。为什么呢!?考虑只是在 WordPress 中放置一个过滤器来交换它们,但这让我觉得这是一个草率的解决方案。
    • 澄清:使用新的嵌入代码嵌入帖子时出现此错误,该代码的 SRC 如下所示://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2 .3 旧的嵌入代码不会出现这个问题,但是如果在同一篇文章中有新的嵌入代码,它会破坏整个 JS 并且两者都不起作用。
    • 你必须指定版本,sdk.js是新的API所以:FB.init({ appId: 'xxxxxxxxxxxxxxxxxx', version : 'v2.5'
    • @bleuscyther 所说的文档。谢谢! developers.facebook.com/docs/javascript/quickstart/v2.5
    • all.js 已弃用,应使用 sdk.js (developers.facebook.com/docs/javascript/howto/angularjs),@bleuscyther 的解决方案是正确的
    【解决方案2】:

    考虑在src 属性中包含一个version 参数,如下所示:

    js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8"
    

    Like button for Web 上的默认模板不完整;单击“获取代码”按钮后,Facebook 将为您生成一个包含version 参数的完整模板。

    【讨论】:

    • 它用于 facebook API,为什么?
    • 这应该是公认的答案,因为不是每个人都需要发起FB.init
    【解决方案3】:

    小提示,我必须改变

    js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&amp;amp;version=v2.8";

    js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&amp;version=v2.8";

    【讨论】:

      【解决方案4】:

      我在将文件从 HTTP 更改为 HTTPS 时遇到了这个问题。原因是以下代码中缺少特定的“HTTP:”或“HTTPS:”:

      <div class="fb-comments" data-width="100%" data-href="//amazingjokes.com/image/2017-03-17/A_good_sign_for_St__Patricks_day" data-num-posts="5"
           data-colorscheme="light">
      </div>
      

      “//domain.com”通常会复制我们使用的方案,因此当您使用 htts://example.com 时,“//example2.com”的链接将显示为“https://example2.com” '。对于“fb-cmets”,您需要专门为 data-href 声明 HTTP 或 HTTPS。

      另请注意,根据 facebook,“https://example.com”是“http://example.com”之外的另一个页面。因此,如果您为 SSL 升级您的网站,如果您将社交插件中的 URL 从 HTTP 更改为 HTTPS,您将丢失所有过去的 cmets...我选择的解决方案是对所有较旧的帖子使用 HTTP,对最近的所有内容使用 HTTPS

      【讨论】:

        【解决方案5】:

        Facebook Share Button Configurator! 的源代码中存在(或曾经)错误!页。如果您使用页面上的共享配置器,它应该可以正常工作。但是,页面上有一个代码示例显示“将代码示例复制并粘贴到您的网站...”,这是错误代码,将导致该按钮在您的页面上不可见。 JavaScript 控制台将显示“错误:指定的版本无效”。

        我在 2018 年 6 月向 Facebook 开了一张关于这个问题的票。他们承认这是代码的问题,并承诺修复代码示例,但截至 2018 年 6 月 17 日,网站上仍然存在错误代码。

        希望这会有所帮助。

        【讨论】:

          【解决方案6】:

          我把原来的 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/

          【讨论】:

            猜你喜欢
            • 2023-02-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-03
            • 1970-01-01
            • 2021-07-23
            • 2015-10-11
            • 1970-01-01
            相关资源
            最近更新 更多