Facebook SDK初始化创建第二个像素

时间:2018-10-04 16:40:34

标签: facebook facebook-javascript-sdk pixel

即使我只初始化了一个像素,我的网站上仍在初始化两个像素。我已指出第二个像素已初始化为用于初始化Facebook登录的Facebook SDK的appId。如何停止第二个像素被初始化。根据{{​​3}}和this的说法,在一个网页上放置多个像素并不是一个好主意。以下是我在做什么的详细信息。

我正在使用下面的标准facebook像素代码在标题中初始化一个facebook像素

<script>
!function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', '{pixel-id}');
  fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
  src="https://www.facebook.com/tr?id={app-id}&ev=PageView&noscript=1"
/></noscript>

这可以正常工作,并且可以初始化像素。问题是,当我使用应用程序ID初始化facebook登录时,它会创建另一个像素,但是这次是使用我的应用程序ID作为像素ID。我正在通过Facebook的像素助手检查此内容。

我用以下代码初始化它:

(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 = 'https://connect.facebook.net/en_US/sdk.js';
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

window.fbAsyncInit = () => {
  FB.init({
    appId: '{app-id}',
    autoLogAppEvents: true,
    xfbml: false,
    version: 'v2.12'
  });

1 个答案:

答案 0 :(得分:1)

  

问题在于,当我使用我的应用程序ID初始化facebook登录时,它会创建另一个像素,但是这次是以我的应用程序ID作为像素ID。

那是

的效果
autoLogAppEvents: true,
在FB.init调用中

初始化SDK。删除它,那么多余的多余像素也应该消失。