Не возвращает токен обновления из кода авторизации - PullRequest
0 голосов
/ 09 октября 2018

Я использую пакет googleapis от узла для получения токена обновления и доступа к токену из кода авторизации, переданного из интерфейса, но каждый раз, когда я получаю следующую ошибку.

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

Я знаю, что эта ошибка возникаеткогда мы не сопоставляем URL, переданный как URL обратного вызова в консоли.https://console.cloud.google.com/apis/credentials

но я уже настроил правильный URL в консоли.до сих пор не уверен, в чем проблема с кодом.

Использование /auth для передачи токена от front-end до node-server.

const {
    google
} = require("googleapis");
const OAuth2 = google.auth.OAuth2;
var bodyParser = require('body-parser')

const express = require('express');
const app = express();
app.use(bodyParser.json());

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});


app.use('/tokenCallback', (req, res) => {
    console.log(req);
    res.send('An alligator approaches!');
});

app.post('/auth', (req, res) => {
    runProcess(req.body.auth);
    res.send('An alligator approaches!');
});

app.listen(4300);

function runProcess(code) {

    const oauth2client = new OAuth2(
        "210347756664-xxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
        "57ZU6JuQ7oQ7SvSFtki5atxx", // Client Secret
        "http://localhost:4300/tokenCallback",
    );

    oauth2client.getToken(code, (e) => {
        console.log(e);
    });

    oauth2client.on('tokens', (tokens) => {
        if (tokens.refresh_token) {
            console.log("refresh token", tokens);
        }
    });

}

Любая помощь от кого-либо будет принята с благодарностью.

1 Ответ

0 голосов
/ 26 октября 2018

redirect_uri_mismatch означает, что ваше приложение не отправляет действительный URI перенаправления или оно не зарегистрировано в Google Cloud Console.

Убедитесь, что в Console -> APIs & Services -> Credentials -> OAuth client IDs -> (your key) вы добавили http://localhost:4300/tokenCallbackURI.

...