/ / Prečo nebude req.session nastavený pomocou node.js - javascript, node.js, oauth, express

Prečo nebude req.session nastavená s názvom node.js - javascript, node.js, oauth, express

Zdá sa, že nie som pripravený na nič

req.session

Snažím sa uložiť token oauth a tajomstvo do relácie, aby som ich mohol skontrolovať po autorizácii spätného volania. Tu je môj kód

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");
});

Keď som sa uncomment

req.session.oauth.token = oauth_token;

Zobrazuje sa mi chyba „nemôžem čítať vlastnosť“, „nedefinované“, a tiež req.session zobrazuje nedefinované v konzole.

odpovede:

2 pre odpoveď č. 1

Pokúšate sa nastaviť vlastníctvo token na objekte oauth na relácii. Ak je oauth objekt nie je inicializovaný, bude undefined, a môžete nastaviť token atribútov. Najprv musíte inicializovať oauth objekt v relácii. Dalo by sa to napríklad urobiť

req.session.oauth = {token: theToken}

Tým sa vytvorí objekt v relácii a tiež nastaví token majetku tohto objektu.

@robertklep prišiel na druhú polovicu riešenia: Uistite sa, že bežíte v správnom prostredí. dev v app.configure, musíte spustiť uzol NODE_ENV=dev pre konfiguráciu, ktorá sa má použiť.


2 pre odpoveď č. 2
var app = express();
app.configure("dev", function() {
app.use(express.logger());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "topsecret" }));
app.use(app.router); // You need to add the router after the express.session
});

dúfam, že vám to môže pomôcť