Google API, Node.js - redirect_uri_mismatch после getToken - PullRequest
1 голос
/ 27 марта 2019

В моем бэкэнд-приложении есть маршрут, который должен возвращать access token для кода, отправленного из внешнего интерфейса:

router.get('/token', (req, res) => {
  const auth = googleService.getAuth();

  auth.getToken(req.query.code, (error, res2) => {
    const data = { code: 200 }

    if (error) {
      data.code = error.code;
      data.error = error.response.data;
    } else {
      console.log(res2);
    }

    res
      .status(data.code)
      .send(data);
  })
});

Я получаю auth от googleService.getAuth ():

const { google } = require('googleapis');
const keys = require('../config/keys');

var module = module.exports = {
  getAuth: (token = false) => {
    let auth = new google.auth.OAuth2(
      keys.google.clientID,
      keys.google.clientSecret,
      keys.google.callbackURL
    );

    if (token) {
      auth.credentials = {
        access_token: token,
        refresh_token: null
      };
    }

    return auth;
  },
  youtube: google.youtube('v3')
};

В моем конфигурационном файле у меня есть callbackURL:

module.exports = {
  google: {
    apiKey: 'XXXXXXXXXXXXXXXX',
    clientID: 'XXXXXXXXXXXXXX',
    clientSecret: 'XXXXXXXXXXXXXXX',
    callbackURL: 'http://localhost:3000/google/redirect'
  }
}

Я также установил это в своей консоли:

enter image description here

Однако у меня всегда возникает следующая ошибка при вызове этого маршрута:

"error": {
  "error": "redirect_uri_mismatch",
  "error_description": "Bad Request"
}

Ответы [ 2 ]

1 голос
/ 27 марта 2019

URI должен соответствовать от аутентификации до токена. Таким образом, похоже, что вы авторизуетесь через конечную точку token и пытаетесь отправить токен на путь google/redirect. Вы можете обойти это.

Для этого убедитесь, что URI перенаправления внесен в белый список в консоли проекта Google. Вы можете просмотреть это через API Access (где вы увидите идентификатор клиента, секрет клиента, а также список Uris перенаправления)

0 голосов
/ 27 марта 2019

Возможно, вы не можете иметь локальный URI перенаправления.

Если это так, вы можете иметь действительный http адрес для вашего локального хоста в течение 2 минут с https://ngrok.com

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...