2017-02-15 216 views
1

我这样做是在解释#1,但它没有工作护照Facebook验证未提供电子邮件地址

passport.use(new FacebookStrategy({ 
    clientID: 'CLIENT ID', 
    clientSecret: 'CLIENT SECRET', 
    callbackURL: "/auth/facebook/callback", 
    profileFields:['id', 'emails', 'link', 'locale', 'name', 
    'timezone', 'updated_time', 'verified', 'displayName'] 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    console.log(profile); 
    var authId = 'facebook:' + profile.id; 
    for(var i = 0; i < users.length; i++){ 
     var user = users[i]; 
     if(user.authId === authId){ 
     return done(null, user); 
     } 
    } 

    var new_user = { 
     'authId':authId, 
     'displayName':profile.displayName 
    }; 
    users.push(new_user); 
    done(null, new_user); 
    } 
)); 

app.get(
    '/auth/facebook', 
    passport.authenticate(
    'facebook', 
    {scope:['email']} 
    ) 
); 

但在我的控制台中的所有方面

_json: 
    { id: 'MY ID', 
    link: 'https://www.facebook.com/app_scoped_user_id/MY_ID/', 
    locale: 'ko_KR', 
    last_name: 'LAST_NAME', 
    first_name: 'FIRST_NAME', 
    timezone: 9, 
    updated_time: '2016-06-26T06:25:28+0000', 
    verified: true, 
    name: 'MY NAME' } } 

有没有电子邮件字段有什么问题? 或者我的Facebook帐户授权有问题吗?

回答

0

在profileFields对象中,使用'email'而不是'emails。

profileFields:['id', 'emails', 'link', 'locale', 'name', 
    'timezone', 'updated_time', 'verified', 'displayName'] 

profileFields:['id', 'email', 'link', 'locale', 'name', 
    'timezone', 'updated_time', 'verified', 'displayName'] 
+0

感谢您发表评论!但它不工作...... :(我不知道为什么...... !!同样的情况 –

+0

我试过一样,它工作,不知道什么是错的 –

+0

我认为我的facebook帐户存在一些问题授权我会检查它。感谢您的评论:) –

0

更换试试这个:

passport.use(new FacebookStrategy({ 
    clientID: 'CLIENT ID', 
    clientSecret: 'CLIENT SECRET', 
    callbackURL: "/auth/facebook/callback", 
    profileFields:['id', 'emails', 'link', 'locale', 'name', 
    'timezone', 'updated_time', 'verified', 'displayName'] 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    console.log(profile.emails[0].value); 
    var authId = 'facebook:' + profile.id; 
    for(var i = 0; i < users.length; i++){ 
     var user = users[i]; 
     if(user.authId === authId){ 
     return done(null, user); 
     } 
    } 

    var new_user = { 
     'authId':authId, 
     'displayName':profile.displayName 
    }; 
    users.push(new_user); 
    done(null, new_user); 
    } 
)); 

app.get(
    '/auth/facebook', 
    passport.authenticate(
    'facebook', 
    {scope:['public_profile', 'email']} 
    ) 
);