我使用PassportJS爲瀏覽器和移動客戶端處理FB身份驗證。對於網絡用戶,我使用的是Passport FacebookStrategy,並且按照預期工作。我也想讓移動客戶端訪問我的API。我正在嘗試使用Passport FacebookTokenStrategy來促進此操作。這似乎正在處理一個小問題。當移動客戶端向服務器發出GET請求時,將使用FacebookTokenStrategy並調用驗證回調函數。在驗證功能中,我可以看到用戶配置文件可用,因此驗證成功。但是,對移動客戶端的響應會發回404的HTTP狀態。我不知道如何正確配置它。這就是我想目前:PassportJS - FacebookTokenStrategy返回404
// Web based auth
passport.use(new FacebookStrategy({
clientID: Config.facebook.clientID,
clientSecret: Config.facebook.clientSecret,
callbackURL: "http://localhost/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate(profile, function(err, user){
done(err, user);
});
}
));
// Mobile client auth
passport.use(new FacebookTokenStrategy({
clientID: Config.facebook.clientID,
clientSecret: Config.facebook.clientID
},
function(accessToken, refreshToken, profile, done) {
console.log(profile);
User.findOrCreate(profile, function(err, user){
done(err, user);
});
}
));
// Redirect the user to Facebook for authentication. When complete,
// Facebook will redirect the user back to the application at
// /auth/facebook/callback
exports.fb_auth = passport.authenticate('facebook',{ scope: 'email' });
// Facebook will redirect the user to this URL after approval. Finish the
// authentication process by attempting to obtain an access token. If
// access was granted, the user will be logged in. Otherwise,
// authentication has failed.
exports.fb_callback = passport.authenticate('facebook', { successRedirect: '/',
failureRedirect: '/login' });
// Mobile Authentication
exports.mobile_fb_auth = passport.authenticate('facebook-token');
我應該提供passport.authenticate(「Facebook的令牌」);與一些額外的'onsuccess'回調?這在Web客戶端的上下文中是有道理的,但我不確定如何使用facebook-token策略來處理這個問題。
嗨。你有沒有得到404問題的原因。我面臨同樣的問題 – shanks
嗨, 我有類似的問題。 首先我看到你使用Config.facebook.clientID作爲clientID和clientSecret。錯別字? 您是否實現了User.findOrCreate方法? 你是否在app.use(passport.initialize())之後實現了passport.serializeUser和passport.deserializeUser? – jonasonline
btw ...如果你還沒試過,我可以推薦編輯器[Brackets](http://brackets.io)。它有一個很好的節點調試器[Theseus](https://github.com/adobe-research/theseus)。 奇怪的是,你得到404你...會更有意義,如果它是401或500 ... – jonasonline