我正在用 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:
但似乎没有任何改变。