Не удалось обменять ключ авторизации на токены: недопустимая ошибка - PullRequest
0 голосов
/ 09 января 2019

У меня проблема с обменом ключом аутентификации Google (для автономного доступа) с токенами доступа / обновления.

Когда я вызываю API для получения токенов, я всегда получаю ошибку «invalid_grant».

request error

Я могу предоставить исходный код страницы OAuth (откуда я беру этот код):

https://pastebin.com/uAS86bj9

gapi.client.init({
        apiKey: apiKey,
        clientId: clientId,
        scope: scopes
    })
.....
var user =  data.getAuthInstance().currentUser.get();

user.grantOfflineAccess({
        }).then(function (resp) {
              $('#content').append('<br>code: ' + resp.code);   // <-- this is the code
        });

и (с гораздо большим количеством экспериментов и множеством странных вещей): https://pastebin.com/JDhf88qd

Я уже пытался: - использовать redirect_uri - синхронизировать время с NTP - двойная проверка клиентов и клиентов

Лучшее объяснение:

У меня есть собственное приложение с классическим «логином через Google» (которое отлично работает). Теперь мне нужен ключ авторизации для олицетворения пользователя из серверного приложения (для загрузки данных Fitness). Итак, я попробовал две вещи, обе с одинаковым результатом:

user.grantOfflineAccess

Обещание фактически возвращает мне код авторизации.

Второе, что я попробовал, это позвонить:

var link = 'https://accounts.google.com/o/oauth2/v2/auth?redirect_uri={url}&response_type=code&client_id='+ clientId +'&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ffitness.body.read&access_type=offline';
        window.open(link);

и беру код, полученный от этого перенаправления.

Теперь мне нужно (в моем серверном приложении) получить access_token и refresh_token с серверов Google. Я только симулирую это с почтальоном, я буду выполнять запросы с помощью другого инструмента.

Итак, я сейчас пытаюсь позвонить

POST https://accounts.google.com/o/oauth2/token

или

POST https://www.googleapis.com/oauth2/v4/token

с этими данными:

code={thecode}&client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&redirect_uri={url}&grant_type=authorization_code

но я получаю сообщение "invalid_grant"

...