Как правильно получить токен доступа из авторизованного входа в Google (только клиентское приложение)? - PullRequest
0 голосов
/ 03 июня 2019

Я использую кнопку входа в Google, чтобы позволить пользователю войти в систему со своей учетной записью Google:

    gapi.signin2.render("container-btn-google-login", {
        scope: "email profile",
        onsuccess: (user) => {
            let token = user.getAuthResponse();
            setToken(token);

            // How can I get the Access Token here
            // that should be the same as user.Zi.access_token?

            resolve(token);
        },
    });

Я собираюсь вызывать другие API Google и не хочу использовать их библиотеку Javascript (я буду использовать fetch для вызова их REST API).

Однако, когда я ставлю Authorization: token.id_token в качестве заголовка, запрос отклоняется. Если я вручную введу значение, которое я вижу из консоли (user.Zi.access_token), оно будет работать.

Как мне извлечь access_token из Google API Javascript SDK? Использование чего-то загадочного и недокументированного, такого как Zi, не кажется мне безопасным.

1 Ответ

0 голосов
/ 03 июня 2019

Хорошо, я нашел соответствующую документацию здесь. Мы можем использовать user.getAuthResponse(true), чтобы получить Auth Response с токеном доступа и, возможно, другой полезной информацией:

Параметр includeAuthorizationData:

Необязательно: логическое значение, указывающее, всегда ли возвращать доступ токен и области. По умолчанию токен доступа и запрошенные области не возвращаются, когда fetch_basic_profile имеет значение true (значение по умолчанию) и никаких дополнительных областей не требуется.

Пример рабочего кода из моего вопроса:

let token = user.getAuthResponse(true);
console.log(token.access_token)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...