javascript - Google 注销过程中出现错误未捕获错误 : nb JS

标签 javascript google-signin

为了重构我的代码,我编写了 google SignOut 函数,如下所示

function googleSignOut() {
    if (typeof module_google_login == 'undefined') {
        return false;
    }
    gapi.load('auth2', function () {
        var gApiAuth = gapi.auth2;
        gApiAuth.init().then(doGoogleLogout(gApiAuth));
    });
};

function doGoogleLogout(gApiAuth) {
    console.log(gApiAuth);
    var googleAuth = gApiAuth.getAuthInstance();
    googleAuth.signOut().then(function () {
        $.ajax({
            type: 'POST',
            url: '/account/logout/',
            success: function () {
                auth2.disconnect();
                window.location = "/account";
            }
        });
    });
}

但是它在控制台中给出了这样的错误

Uncaught Error: nb
    at tE (cb=gapi.loaded_0:201)
    at jF.<anonymous> (cb=gapi.loaded_0:248)
    at new _.C (cb=gapi.loaded_0:123)
    at jF.BT (cb=gapi.loaded_0:248)
    at Ay.Qv.a.<computed> [as signOut] (cb=gapi.loaded_0:227)
    at doGoogleLogout (main.js:48)
    at main.js:41
    at platform.js:18
    at Sa (platform.js:10)
    at Y (platform.js:18)

但是我是这样实现的

function googleSignOut() {
    if (typeof module_google_login == 'undefined') {
        return false;
    }
    gapi.load('auth2', function () {
        gapi.auth2.init().then(function () {
            var auth2 = gapi.auth2.getAuthInstance();
            auth2.signOut().then(function () {
                $.ajax({
                    type: 'POST',
                    url: '/account/logout/',
                    success: function () {

                        window.location = "/account";
                    }
                });
            });
        });
    });
};

然后它就可以正常工作,尽管看起来不太好。如果有人可以告诉我以前的实现有什么问题以及不起作用。

最佳答案

问题出在这一行 gApiAuth.init().then(doGoogleLogout(gApiAuth));

对于 Promise 的成功处理程序,您需要传递函数引用,而不是直接调用函数。这里 doGoogleLogout(gApiAuth) 将在 promise 解决之前被调用。将其更改为 gApiAuth.init().then(()=>doGoogleLogout(gApiAuth))

从此link了解更多信息

关于javascript - Google 注销过程中出现错误未捕获错误 : nb JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56825671/

相关文章:

java - 使用 google + 登录时如何询问范围的个人权限?

spring - 多个客户端ID Spring 安全配置

ios - 将 native Google 登录按钮的用户交互设置为 false

javascript - AngularJS 中的 HTML 标记

javascript - handlebarsjs - 我可以通过 json 键访问元素吗?

javascript - 选择 bootstrap 下拉菜单,jquery 不工作

facebook - 谷歌、Facebook 使用 Flutter 登录支持

javascript - 在父 div 上使用 .height() 后,改变高度的子元素不再影响父元素的高度,为什么?

javascript - React Router 无法渲染路由

android - 谷歌登录并自行加载到新 Activity 后崩溃