我使用的護照Facebook的插件和我的測試腳本定義的策略如下:護照Facebook的策略在NextJS應用程序返回undefined值
// Configure Passport
// ---------------------------------------------------------------
passport.use(new LocalStrategy(User.authenticate()));
passport.use(new FacebookStrategy({
clientID: process.env.FACEBOOK_APP_ID,
clientSecret: process.env.FACEBOOK_APP_SECRET,
callbackURL: process.env.FACEBOOK_APP_CALLBACK,
},
function (accessToken, refreshToken, profile, done) {
console.log(profile);
}
));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
// ---------------------------------------------------------------
我的認證途徑是:
// Facebook
router.get('/auth/facebook', passport.authenticate('facebook'));
router.get('/facebook/callback',
passport.authenticate('facebook', {
successRedirect: '/success',
failureRedirect: '/failure',
}),
);
我現在所要做的就是顯示Facebook成功驗證後返回的所有值。認證工作正常但Facebook似乎在profile
對象被返回undefined
大多數鍵:
{ id: '1234567812345677',
username: undefined,
displayName: 'John Doe',
name:
{ familyName: undefined,
givenName: undefined,
middleName: undefined },
gender: undefined,
profileUrl: undefined,
provider: 'facebook',
_raw: '{"name":"John Doe","id":"1234567812345677"}',
_json: { name: 'John Doe', id: '1234567812345677' } }
我得到的是displayName
和id
;其他一切都是undefined
。出了什麼問題?之前在這裏提出了一個非常類似的問題,但沒有一個答案(沒有被接受的答案)提供瞭解決問題的方法。
完成guess-檢查您的應用範圍。您可能沒有完整的個人資料信息的權限。 –
我沒有爲我的認證調用指定任何明確的'範圍'。不應該像* username *那樣可以作爲默認範圍的一部分?我在網上遇到的所有教程(包括PassportJS文檔)都會指示您指定一個範圍,以便您需要任何其他訪問權限,例如時間線等。 – TheLearner
您是否找到了解決方案?我得到了同樣的問題:/ –