3

我正在用 React 做一个应用程序,Facebook 登录在 Chrome、Safari 和其他人中工作,但它不在三星浏览器上。我试图调试在其中放置断点的代码window.fbAsyncInit但该函数从未在三星浏览器上执行(它在其他浏览器中执行)。我还检查了脚本元素#facebook-jssdk是否已添加到 DOM。同时,开发工具的网络选项卡显示没有任何对connect.facebook.net/es_ES/sdk.js.

  componentDidMount() {
    if (!process.env.REACT_APP_FB_APP_ID) {
      throw new Error(
        'Facebook appId not found. Set the environment variable REACT_APP_FB_APP_ID with your appId'
      );
    }

    if (!process.env.REACT_APP_GTM_ID) {
      throw new Error(
        'Google Tag Manager id not found. Set the environment variable REACT_APP_GTM_ID with your GTM id'
      );
    }

    window.fbAsyncInit = () => {
      console.log('init facebook init');

      // $FlowFixMe
      FB.init({
        appId: process.env.REACT_APP_FB_APP_ID,
        autoLogAppEvents: true,
        xfbml: true,
        version: 'v2.11'
      });

      window.FB.AppEvents.logEvent('started app');
    };

    (function(d, s, id) {
      const element = d.getElementsByTagName(s)[0];
      let fjs = element;
      let js = element;
      if (d.getElementById(id)) {
        return;
      }
      js = d.createElement(s);
      js.id = id;
      js.src = '//connect.facebook.net/es_ES/sdk.js';
      // $FlowFixMe
      fjs.parentNode.insertBefore(js, fjs);
    })(document, 'script', 'facebook-jssdk');
  }

我认为它应该是对 XSS 脚本或类似的东西的任何保护,或者可能只是内置的三星广告拦截?我试图更改js.src添加的协议https:http:但似乎没有任何改变。

4

0 回答 0