爲了修改的範圍,你這樣做,當你設置你的Facebook的戰略路線。
例如,如果我想用戶的電子郵件是我的範圍的一部分,該礦將如下所示:
app.get('/auth/facebook', passport.authenticate('facebook', { scope: 'email' }));
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { successRedirect: '/',
failureRedirect: '/' }));
我救了我的信息的MongoDB與貓鼬,但你可以很容易地將他們的朋友粘在req.user中。下面是我如何映射我的Facebook用戶的數據爲例:
passport.use(new FacebookStrategy({
clientID: Common.conf.fb.appId,
clientSecret: Common.conf.fb.appSecret,
callbackURL: Common.conf.site_url + "/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
Model.User.findOne({uid: profile.id}, function(err, user) {
if (err) { return done(err); }
if (user) { done(null, user); } else {
var user_data = {
provider: profile.provider
, alias: profile.username
, email: profile.emails[0].value
, uid: profile.id
, created: new Date().getTime()
, name: {
first: profile.name.givenName
, last: profile.name.familyName
}
, alerts: {
email: true
, mobile: false
, features: true
}
};
new Model.User(user_data).save(function(err, user) {
if(err) { throw err; }
done(null, user);
});
}
});
}
));
有時是有幫助的投入的console.log(配置文件),像這樣:
function(accessToken, refreshToken, profile, done) {
console.log(profile);
,以幫助你看到原始輸出Facebook API給你的東西,並檢查你的自定義範圍變量是否存在。
能否請您分享一下如何正在圖形API調用? –