Facebook javascript api 呼叫已停止发送
Facebook javascript api calls stopped being sent
我们有一个使用 Facebook 登录的网站。 4 天前,未进行任何更改,登录按钮停止运行。
对 FB.init 的调用在以下情况下运行良好:
function initFB() {
FB.init({
appId: ufm_config.fbAppId,
cookie: true,
oauth: true,
xfbml: true,
logging: true,
autoLogAppEvents: true,
frictionlessRequests: true,
status: true,
version: 'v2.12'
});
FB.getLoginStatus(fbConnectionChanged);
FB.Event.subscribe("auth.login", fbConnectionChanged);
FB.Event.subscribe('auth.authResponseChange', fbConnectionChanged);
FB.Event.subscribe("auth.logout", fbConnectionChanged);
}
对 getLoginStatus(fbConnectionChanged) 的调用也有效,正在触发回调。
页面加载后,用户可以点击 Facebook 登录按钮,当他点击时我们调用 FB.Login(fbConnectionChanged)。我可以看到调用已添加到 Facebook SDK 代码中的 "calls" 数组,但未触发回调。
当我再次点击按钮时,我看到 "calls" 数组仍然包含之前的登录请求,而现在第二个请求只是被添加到那里。所有的电话都卡在那里:
f.__buffer.calls.push([a, Array.prototype.slice.call(参数)])
即使我将 FB.Login(fbConnectionChanged) 调用更改为 FB.getLoginStatus(fbConnectionChanged),我也会得到相同的行为,所以它不仅仅是登录调用本身。
我们也没有在 Facebook 应用程序中进行任何更改,并且该站点在 "Valid OAuth Redirect URIs".
中进行了配置
我还能尝试做些什么来解决它?
更新:
当我从控制台调用 FB.login() 时,它工作正常。无法理解为什么它在按钮点击功能上不起作用。
我们在 3-4 天前遇到了同样的问题。电话将转到 __buffer。这里的问题是 FB 改变了他们的 sdk 上的一些东西,它在内部加载了更新版本的 SDK。当你执行init时,初始版本被加载并同步返回。
https://connect.facebook.net/en_US/sdk.js 负载
https://connect.facebook.net/en_US/sdk.js?hash=39f310e26cdcb1dd91634dc45d62ffe9&ua=modern_es6 异步。因此,我们解决这个问题的方法是在加载页面本身时初始化 FB。然后使用 FB 或 window.FB 在点击时进行其他调用(异步)。这就是为什么它也可以在控制台上运行的原因,因为届时将加载较新的 sdk 并可供使用。
伪示例代码:
constructor() {
FB.init({...})
}
onButtonClicked() {
FB.login({...})
}
此外,注意到 __buffer 现在已在加载的较新 sdk 中被 __globalCallbacks 取代。
希望这对您有所帮助
我们有一个使用 Facebook 登录的网站。 4 天前,未进行任何更改,登录按钮停止运行。
对 FB.init 的调用在以下情况下运行良好:
function initFB() {
FB.init({
appId: ufm_config.fbAppId,
cookie: true,
oauth: true,
xfbml: true,
logging: true,
autoLogAppEvents: true,
frictionlessRequests: true,
status: true,
version: 'v2.12'
});
FB.getLoginStatus(fbConnectionChanged);
FB.Event.subscribe("auth.login", fbConnectionChanged);
FB.Event.subscribe('auth.authResponseChange', fbConnectionChanged);
FB.Event.subscribe("auth.logout", fbConnectionChanged);
}
对 getLoginStatus(fbConnectionChanged) 的调用也有效,正在触发回调。
页面加载后,用户可以点击 Facebook 登录按钮,当他点击时我们调用 FB.Login(fbConnectionChanged)。我可以看到调用已添加到 Facebook SDK 代码中的 "calls" 数组,但未触发回调。
当我再次点击按钮时,我看到 "calls" 数组仍然包含之前的登录请求,而现在第二个请求只是被添加到那里。所有的电话都卡在那里:
f.__buffer.calls.push([a, Array.prototype.slice.call(参数)])
即使我将 FB.Login(fbConnectionChanged) 调用更改为 FB.getLoginStatus(fbConnectionChanged),我也会得到相同的行为,所以它不仅仅是登录调用本身。
我们也没有在 Facebook 应用程序中进行任何更改,并且该站点在 "Valid OAuth Redirect URIs".
中进行了配置我还能尝试做些什么来解决它?
更新:
当我从控制台调用 FB.login() 时,它工作正常。无法理解为什么它在按钮点击功能上不起作用。
我们在 3-4 天前遇到了同样的问题。电话将转到 __buffer。这里的问题是 FB 改变了他们的 sdk 上的一些东西,它在内部加载了更新版本的 SDK。当你执行init时,初始版本被加载并同步返回。
https://connect.facebook.net/en_US/sdk.js 负载 https://connect.facebook.net/en_US/sdk.js?hash=39f310e26cdcb1dd91634dc45d62ffe9&ua=modern_es6 异步。因此,我们解决这个问题的方法是在加载页面本身时初始化 FB。然后使用 FB 或 window.FB 在点击时进行其他调用(异步)。这就是为什么它也可以在控制台上运行的原因,因为届时将加载较新的 sdk 并可供使用。
伪示例代码:
constructor() {
FB.init({...})
}
onButtonClicked() {
FB.login({...})
}
此外,注意到 __buffer 现在已在加载的较新 sdk 中被 __globalCallbacks 取代。
希望这对您有所帮助