NPM Grant OAuth Middleware ошибка "invalid_redirect"
Я пытался использовать этот элегантно выглядящий пакет для аутентификации с помощью Jawbone API. Но я продолжаю получать эту ошибку -
Я настроил свое "приложение" со службой Jawbone API для использования этих URI перенаправления -
Мой конфигурационный файл выглядит так -
module.exports = {
'server': {
'protocol' : 'https',
'host' : 'localhost',
'port' : 5000,
'callback' : '/done',
'transport' : 'session',
'state' : true
},
'jawbone' : {
'key' : '6f*********',
'secret' : '9b************************',
'callback' : '/connect/jawbone/callback',
'scope' : ['basic_read', 'sleep_read'],
}
}
Я пытался следовать примерам авторов, чтобы создать app.js, как это -
var config = require('./config');
var express = require('express');
var session = require('express-session');
var Grant = require('grant-express');
var grant = new Grant(require('./config.js'));
var bodyParser = require('body-parser')
var app = express()
var Purest = require('purest');
var jawbone = new Purest({provider:'jawbone'});
var https = require('https');
var fs = require('fs');
var logger = require('morgan')
app.use(logger('dev'))
app.use(bodyParser.urlencoded({extended:true}));
app.use(session({secret:'grant'}));
app.use(grant);
app.get('/done', function (req, res) {
console.log(req.query);
res.end(JSON.stringify(req.query, null, 2));
});
/*
jawbone.get('users/@me', {
auth:{bearer:'[ACCESS_TOKEN]'}
}, function (err, res, body) {
// body is a parsed JSON object containing the response data
console.log(body);
})
*/
var sslOptions = {
key: fs.readFileSync('./.server.key'),
cert: fs.readFileSync('./.server.crt')
};
var secureServer = https.createServer(sslOptions, app).listen(config.server.port, function(){
console.log('Listening on port ' + config.server.port);
});
Я предполагаю, что я делаю noob-ошибку и, возможно, неправильно читаю документацию или примеры. Может кто-то указать, что я неправильно настроил?
1 ответ
Как отмечено в комментариях выше, ваша конфигурация должна выглядеть следующим образом:
{
'server': {
'protocol' : 'https',
'host' : 'localhost:5000',
'transport' : 'session',
'state' : true
},
'jawbone' : {
'key' : '6f*********',
'secret' : '9b************************',
'callback' : '/handle_jawbone_callback',
'scope' : ['basic_read', 'sleep_read'],
}
}
В настоящее время нет отдельных port
Если у вас нет виртуального хоста поверх вашего приложения, вы должны добавить номер порта к host
значение - host:'localhost:5000
,
За callback
ключ, вы всегда должны установить путь на вашем сервере, где вы хотите получать результаты из потока OAuth. /connect/jawbone/callback
маршрут, который вы указали для redirect_uri
вашего приложения OAuth зарезервировано для Grant, поэтому вы не можете использовать этот маршрут напрямую.
Например, вы можете установить окончательный маршрут следующим образом: callback:'/handle_jawbone_callback'
,
Все это также задокументировано в файле readme модуля.