1

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

Вот мой код:

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; 

ответ

2

Я думаю, вы должны перенаправить на 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); 
}); 

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