JS项目中的FB.logout给出错误“表达式类型未定义,不是函数”

Hra*_*aik 10 javascript facebook-login reactjs

我正在尝试在我的 React 网站上添加使用 FB 登录

FB.init({
    appId      : app_id,
    cookie     : true,
    xfbml      : true,
    version    : 'v5.0'
});
Run Code Online (Sandbox Code Playgroud)

其次是

FB.getLoginStatus(({status}) => {
    if (status === 'connected') {
        FB.logout();
    }
    FB.login((response) => {
        if (response.authResponse) {
            const {authResponse: {accessToken}} = response;
            onSuccess(accessToken);
        } else {
            onError({error: 'popup_closed_by_user'});
        }
    }, {scope: 'email'});
})
Run Code Online (Sandbox Code Playgroud)

但是它第一次打开弹出窗口(当getLoginStatus不是connected)然后第二次它在控制台上显示错误

Uncaught b { innerError: undefined, message: "Expression is of type undefined, not function" }
Run Code Online (Sandbox Code Playgroud)

经过进一步调查,我发现该错误发生在FB.logout()调用该行时。

我可能做错了什么?

注意相同的代码一直工作到昨天。

小智 7

现在似乎需要FB.logoutparam: cb

https://developers.facebook.com/docs/reference/javascript/FB.logout/

不确定它何时成为强制性的,但没有它它就不再起作用了。

  • 我向上帝发誓,Facebook 的人们真的需要重新考虑抛出适当的异常消息。返回“注销需要强制回调函数”有多难。与极其复杂的“表达式是未定义类型,而不是函数”相反。或者更好,`if (typeof cb !== "function") return;`。-__- (3认同)