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 модуля.

Другие вопросы по тегам