Google Drive OAuth 2.0 Неверный тип grant_type - PullRequest
0 голосов
/ 11 июня 2018

Следуя примеру из OAuth2WebServer от Google Я пытаюсь настроить поток аутентификации из экспресс-приложения, используя метод HTTP / REST, который у них есть, но при каждом запросе я получаю сообщение об ошибке

Я прошел через кошмар Google OAuth «invalid_grant» - и как его исправить , но, к сожалению, это не помогло.

{
  error: "unsupported_grant_type",
  error_description: "Invalid grant_type: "
}

Это сокращенная версия ошибки IЯ получаю.Если вам нужно узнать больше об ошибке, дайте мне знать, и я могу опубликовать ее.

Сервер

const express = require('express');
const axios = require('axios');

const { web } = require('./src/client_id.json');

const app = express();
const { client_id, client_secret } = web;

let count = 0;

app.use(express.json());

/*************************
** REDIRECT USER TO GOOGLE AUTH **
*************************/
app.get('/', (req, res) => {
  const redirect_uri = 'http://localhost:5000/auth';
  const scope = 'https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly';
  const access_type = 'offline';

  res.redirect(`https://accounts.google.com/o/oauth2/v2/auth?scope=${ scope }&access_type=${ access_type }&redirect_uri=${ redirect_uri }&response_type=code&client_id=${ client_id }`);
});

/*************************
** ON AUTH WE EXCHANGE ACCESS TOKEN FOR REFRESH TOKEN **
*************************/
app.get('/auth', (req, res) => {
  count++;

  if (count >= 2) {
    return res.redirect('http://localhost:3000');
  }

  const { code } = req.query;
  const redirect_uri = 'http://localhost:5000/auth';
  const grant_type = 'authorization_code';

  axios.post('https://www.googleapis.com/oauth2/v4/token', {
    code,
    client_id,
    client_secret,
    redirect_uri,
    grant_type
  }, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
    .then(data => {
      console.log(data)
      res.redirect('http://localhost:3000');
    })
    // ALWAYS HITS THE CATCH "Invalid grant_type"
    .catch(err => {
      console.log(err);
      console.log('ERROR')
    });
});

app.listen(5000, console.log('Server listening on port 5000'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...