首页 > 解决方案 > 在我的谷歌登录代码中出现以前没有的错误

问题描述

我的项目中目前有这段代码:

后端:

app.post('/login', (req, res)=>{
    let token = req.header.token;

    async function verify() {
        const ticket = await client.verifyIdToken({
            idToken: id_token,
            audience: CLIENT_ID,
        });
        const payload = ticket.getPayload();
        const userid = payload['sub'];
        console.log(payload)
    }
    verify()
        .then(()=>{
            res.cookie('session-token', token);
            res.send('success');
        }).
    catch(console.error);
})

前端:

<script>
        function onSignIn(googleUser) {
            var id_token = googleUser.getAuthResponse().id_token;
            console.log(id_token)

            var xhr = new XMLHttpRequest();
            xhr.open('POST', '/login');
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.onload = function() {
                console.log('Signed in as: ' + xhr.responseText);
                if(xhr.responseText == 'success'){
                    signOut();
                    location.assign('/dashboard');
                }
            };
            xhr.send(JSON.stringify({token: id_token}));
        }
    </script>

当我启动 localhost 并导航到 /login 路由时,我的终端中出现错误,并显示以下消息:

Error: The verifyIdToken method requires an ID Token
    at OAuth2Client.verifyIdTokenAsync (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/google-auth-library/build/src/auth/oauth2client.js:391:19)
    at OAuth2Client.verifyIdToken (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/google-auth-library/build/src/auth/oauth2client.js:386:25)
    at verify (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/testserver.js:29:37)
    at /Users/gilmoreg01/Developer/pinventory/pinventory_backend/testserver.js:37:5
    at Layer.handle [as handle_request] (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/express/lib/router/layer.js:95:5)
    at /Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/Users/gilmoreg01/Developer/pinventory/pinventory_backend/node_modules/express/lib/router/index.js:335:12)

我对正在发生的事情感到非常困惑,因为我之前有它工作过,自从它上次工作以来我没有改变任何东西。如果有人知道发生了什么,我很乐意知道。

谢谢!

标签: javascriptnode.jsgoogle-signin

解决方案


推荐阅读