Я тестирую Google Singin для приложения SPA js + nodejs. Я добавил это:
<script src="https://apis.google.com/js/platform.js" async defer></script>
и эти:
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
<div class="g-signin2" data-onsuccess="onSignIn"></div>
на стороне клиента html5 / js. следуя этому руководству:
https://developers.google.com/identity/sign-in/web/sign-in
когда пользователи проверяют подлинность, библиотека получает токен и передает его серверу, как описано здесь:
https://developers.google.com/identity/sign-in/web/backend-auth
на стороне сервера (nodejs) токен проверяется с помощью этой функции:
client.verifyIdToken(
token,
CLIENT_ID,
// Or, if multiple clients access the backend:
//[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3],
function(e, login) {
var payload = login.getPayload();
var userid = payload['sub'];
// If request specified a G Suite domain:
//var domain = payload['hd'];
});
МОЙ ВОПРОС: когда используется client_secret? поскольку я использовал интерфейс CLIENT_ID для получения токена аутентификации от Google, я использовал серверную часть CLIENT_ID для проверки токена. Я думал, что токен мог быть проверен с помощью client_secret (то есть SECRET), известной только на стороне сервера, так что никто другой, получающий токен, не может аутентифицировать этого пользователя. Что мне не хватает?