2013-07-09 17 views
0

我正在嘗試使用OAuth2orize,並且API端點採用了Git中的example中提到的BearerStrategy。代碼如下所示創建新的BearerStrategy時出錯

passport.use(new BearerStrategy(
    function(accessToken, done){ 
    accessTokens.find(accesstoken, function(err, token){ 
     if (err) {return done(err);} 
     if (!token) {return done(null, false); } 

     users.find(token.user_id, function(err, user){ 
     if (err) { return done(err); } 
     if (!user) { return done(null, false); } 

     var info = { scope: '*' } 
     done(null, user, info); 
     }); 
    }); 
    } 
)); 

而且我收到以下錯誤,當我嘗試啓動:

/Users/saransh2012/Developer/vypics/node_modules/passport/lib/passport/index.js:51 
    if (!name) throw new Error('authentication strategies must have a name'); 
       ^
Error: authentication strategies must have a name 
    at Passport.use (/Users/saransh2012/Developer/vypics/node_modules/passport/lib/passport/index.js:51:20) 
    at Object.<anonymous> (/Users/saransh2012/Developer/vypics/android_app/auth.js:54:10) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/Users/saransh2012/Developer/vypics/android_app/app.js:11:1) 
    at Module._compile (module.js:456:26) 

在同一文件中,我也是做新BasicStrategy和的工作,但還是這個ISN」不工作。

回答

0

您需要將一個空對象作爲第一個參數傳遞給BearerStrategy的構造函數。即

new BearerStrategy(
    { }, // <-- the first argument should be an empty object 
    function(accessToken, done){ 
    accessTokens.find(accesstoken, function(err, token){ 
     if (err) {return done(err);} 
     if (!token) {return done(null, false); } 

     users.find(token.user_id, function(err, user){ 
     if (err) { return done(err); } 
     if (!user) { return done(null, false); } 

     var info = { scope: '*' } 
     done(null, user, info); 
     }); 
    }); 
    } 
)