0

私は何も設定できないようです

req.session

oauth トークンとシークレットをセッションに保存しようとしているので、認証コールバック後にそれらを確認できます。これが私のコードです

var express = require('express'),
    app     = express(),
    server  = require('http').createServer(app),
    io      = require('socket.io').listen(server),
    oauth   = require('oauth'),
    tumblr  = require('tumblr.js'),
    client  = {
        consumer_key: '1n9fMPxCBFBbcIGRImYKSK5wwDL6yux64S4DxEwiwzHTNuaIoD',
        consumer_secret: 'bW9YKbnwgxexyVx1AaxQr1QoemEkjd29p5U1WpbZ8r1XEH41C0'
    },
    consumer = new oauth.OAuth(
        "http://www.tumblr.com/oauth/request_token", "http://www.tumblr.com/oauth/access_token",
        client.consumer_key, client.consumer_secret, "1.0A", "http://127.0.0.1:8080/sessions/callback", "HMAC-SHA1");

server.listen(1337);

app.configure('dev', function(){
    app.use(express.logger());
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({ secret: "topsecret" }));
});


app.get('/home', function(req, res){
    consumer.getOAuthRequestToken(function(err, oauth_token, oauth_token_secret, results){
        if(err){
            console.log(err);
        }else{
            //req.session.oauth.token = oauth_token;
            console.log('oauth.token: ' + oauth_token);
            //req.session.oauth.token_secret = oauth_token_secret;
            console.log('oauth.token_secret: ' + oauth_token_secret);
            res.redirect('http://www.tumblr.com/oauth/authorize?oauth_token='+oauth_token);
        }
    });
});

app.get('/oauth/testapp', function(req, res){
    res.send('callback');
});

コメントを外すと

req.session.oauth.token = oauth_token;

「undefined のプロパティ 'oauth' を読み取れません」というエラーが表示され、コンソールに req.session が undefined と表示されます。

4

2 に答える 2

2

セッションtokenのオブジェクトにプロパティを設定しようとしています。オブジェクトが初期化されていない場合は になりoauth、属性を設定することはできません。まず、セッションでオブジェクトを初期化する必要があります。たとえば、次のことができますoauthundefinedtokenoauth

req.session.oauth = {token: theToken}

これにより、セッションにオブジェクトが作成され、tokenそのオブジェクトのプロパティも設定されます。

@robertklep は解決策の残りの半分を見つけました: 正しい環境で実行していることを確認してください。で使用devしたため、構成を適用するには、app.configureでノードを実行する必要があります。NODE_ENV=dev

于 2013-03-29T10:14:30.357 に答える