首页 > 解决方案 > 如何避免 Facebook xfbml.customerchat.js 与 sdk.js 冲突?

问题描述

我的网站上有两个应用程序

  1. 客户聊天插件(取自 Facebook 粉丝专页)
  2. Facebook 登录应用程序

拳头一负荷

第二个加载

这两个应用程序不能一起工作 - 如果一个工作 tne 另一个不工作。

因此,如果 Faecbook 登录 SDK 将首先加载,那么客户聊天会抛出该控制台通知:

CustomerChat 插件不再是主要 Facebook SDK 的一部分。要继续使用它,请使用正确的 SDK URL,即用 sdk/xfbml.customerchat.js 替换 sdk.js。有关更多详细信息,请参阅https://developers.facebook.com/docs/messenger-platform/discovery/customer-chat-plugin/sdk

否则,如果仅加载客户聊天,则

FB.login() 在 FB.init() 之前调用。

发生...

想法?

标签: javascriptfacebook

解决方案


那段代码来自客户聊天插件(由 FB 在粉丝页面设置中生成)。

我从 Facebook 登录插件中添加了 FB.init 的一部分,如下所示:

<script>
          window.fbAsyncInit = function() {
            FB.init({
              xfbml            : true,
              version          : 'v3.3'
            });
          };
// added part START
          window.fbAsyncInit = function() {
            FB.init({
              appId      : 'MYAPPID', // Facebook login
              cookie     : true,
              xfbml      : true,
              version    : 'v3.3'
            });
          };
// added part END
          (function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) return;
          js = d.createElement(s); js.id = id;
          js.src = '//connect.facebook.net/lt_LT/sdk/xfbml.customerchat.js';
          fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));
</script>

两个插件都开始工作了。


推荐阅读