Запрос OAuth2 библиотеки API Google для NodeJS

Я пытаюсь настроить авторизацию для использования Google API, чтобы делать запросы к API Инструментов для веб-мастеров, но я не могу понять, как запустить аутентификацию. Я настроил маршрут, который должен запускать вызовы разрешений аутентификации при доступе, но я получаю постоянный сигнал загрузки с ответом о том, что данные не получены. Я использую библиотеку Google, https://github.com/google/google-api-nodejs-client/, и мои учетные данные идентификатора клиента OAuth2 перенаправляют uri, указывающие на http://localhost:3000/, потому что я хочу протестировать настройку локально.

Вот мой код:

index.js

var express = require('express');
var app = express();
var handlebars = require('hbs');
var google = require('googleapis');
var webmastertools = google.webmasters('v3');





app.set('port', process.env.PORT || 3000);

// Handlebars View Engine
app.set('view engine', handlebars);

app.use(express.static(__dirname + '/public')); // set the public directory


app.listen(app.get('port'), function(){
    console.log('Server on port'+app.get('port'));
});

var routes = require('./app/routes');

app.use(routes);

Вот мой route.js:

var express = require('express');
var router  = express.Router();
var google = require('googleapis');
var OAuth2 = google.auth.OAuth2;

var oauth2Client = new OAuth2('*client-id*', '*client-secret*', 'http://localhost:3000/');


router.get('/', function(req, res){
        res.render('index.hbs');
    });


router.get('/auth', function(req, res){
    //generater a url that asks permissions for Webmaster Tools
    var scopes = [
    'https://www.googleapis.com/auth/webmasters'
    ];

    var url = oauth2Client.generateAuthUrl({
    access_type: 'online',
    scope: scopes   
    });

});

router.get('404', function(req, res){
    res.type('text/plain');
    res.status(404);
    res.send('404 - Not Found');
});


router.get('500', function(err,req, res, next){
    console.error(err.stack);
    res.type('text/plain');
    res.status(500);
    res.send('500 - Server Error');
});


module.exports = router;

person cphill    schedule 22.08.2015    source источник


Ответы (1)


Я думаю, вам следует перенаправить на URL-адрес авторизации, предоставленный generateAuthUrl. Что-то вроде:

router.get('/auth', function(req, res){
    //generater a url that asks permissions for Webmaster Tools
    var scopes = [
    'https://www.googleapis.com/auth/webmasters'
    ];

    var url = oauth2Client.generateAuthUrl({
    access_type: 'online',
    scope: scopes   
    });
res.redirect(url);
});

Это переведет пользователя на страницу согласия, где он / она может использовать области, а затем будет перенаправлен на ваш URL-адрес перенаправления. У меня нет этого передо мной, но я думаю, что я это сделал.

person user2069136    schedule 21.09.2015