В HTML на сайте, который я получил из документов здесь
<script src="https://accounts.google.com/gsi/client"></script>
<div
id="g_id_onload"
data-client_id={googleClientID}
data-login_uri='https://mytestdomain.appspot.com/google'
data-return_uri={uri}
></div>
Когда сайт загружается, он показывает мне приглашение продолжить работу с моей учетной записью Google, я нажмите продолжить и он показывает, что я вошел в систему, webhook действительно вызывается, и я могу получить g_csrf_token
от повара ie, затем я пытаюсь проверить это, используя google-auth-library
, как описано здесь, в документации. , которая связана с документами одним нажатием здесь
const { OAuth2Client } = require("google-auth-library");
...
app.post("/google", function(req, res) {
const idToken = req.cookies.g_csrf_token;
const audience = process.env.GOOGLE_CLIENT_ID
const client = new OAuth2Client(audience);
async function verify() {
const ticket = await client.verifyIdToken({ idToken, audience });
const payload = ticket.getPayload();
const userid = payload["sub"];
console.log('------------------ userid');
console.log(userid);
}
verify().catch(console.error);
res.status(200).send({ req });
});
Я получаю ошибку
Error: Wrong number of segments in token: 87ba1eb4d6261b6b at OAuth2Client.verifySignedJwtWithCertsAsync (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:525:19) at OAuth2Client.verifyIdTokenAsync (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:391:34) at processTicksAndRejections (internal/process/task_queues.js:97:5) at async verify (/app/server.js:71:20)
Документы предполагают, что мы должны получить токен в качестве параметра POST, а также в cook ie, я проверил req.body.credential
, req.query.credential
, req.params.credential
, но токен не найден, из документов здесь
After an ID token is returned from Google, it's submitted by an HTTP POST method request to your login endpoint with the parameter name credential.