0

我一直在尝试使用这个外观优雅的包来通过 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);
});

我假设我犯了一个菜鸟错误,并且可能误读了文档或示例。有人可以指出我配置错误的地方吗?

4

1 回答 1

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您为 OAuth 应用程序指定的路由redirect_uri是为 Grant 保留的,因此您不能直接使用该路由。

例如,您可以像这样设置最终路线callback:'/handle_jawbone_callback'

所有这些都记录在模块的自述文件中。

于 2015-07-20T07:13:52.927 回答