Facebook javascript api调用已停止发送

问题描述 投票:1回答:1

我们有一个使用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(arguments)])

即使我将FB.Login(fbConnectionChanged)调用更改为FB.getLoginStatus(fbConnectionChanged),我也会得到相同的行为,因此它不仅仅是登录调用本身。

我们也没有更改Facebook应用程序中的任何内容,并且该站点在“有效的OAuth重定向URI”中配置。

我还可以尝试做些什么来解决它?

更新:

当我从控制台调用FB.login()时它工作正常。无法理解为什么它对按钮点击功能不起作用。

javascript facebook facebook-javascript-sdk
1个回答
1
投票

我们在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取代。

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.