通过passportjs返回的facebook id与facebook用户ID不匹配

时间:2018-01-27 16:02:31

标签: node.js express facebook-graph-api passport.js passport-facebook

我使用了passportjs facebook策略来获取用户信息。但是,通过passportjs返回的用户ID与实际的Facebook用户ID不匹配,并且未定义facebook用户名。如何获取实际的Facebook用户ID和用户名?

passport.use(new FacebookStrategy({
        clientID: config.get('facebook.clientID'),
        clientSecret: config.get('facebook.clientSecret'),
        callbackURL: config.get('facebook.callbackURL'),
        passReqToCallback: true,
        // profileFields: ['id', 'email', 'first_name', 'last_name']
    },
    function(req, accessToken, refreshToken, profile, done) {
        console.log(profile);...........
........................................

// console.log(profile)的输出

_json:Object {name:" Tareq Ahamed",id:" 1720360918026935"} _raw:" {" name":" Tareq Ahamed"," id":" 1720360918026935"}" displayName:" Tareq Ahamed" 性别:未定义 ID:" 1720360918026935" name:Object {familyName:undefined,givenName:undefined,middleName:undefined} profileUrl:未定义 提供商:" Facebook和#34; 用户名:未定义

//但实际的Facebook用户ID是100001591295237

1 个答案:

答案 0 :(得分:1)

无法获取用户的“真实”ID或其用户名。无论如何你都不需要它们,你可以用你得到的ID来识别返回的用户 - 它被称为“应用程序范围ID”,并且它将在每个应用程序中保持不变。

如果您需要请求中的其他数据而不仅仅是ID和名称,则必须使用所记录的fields参数:https://developers.facebook.com/docs/graph-api/using-graph-api#fields