我使用了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
答案 0 :(得分:1)
无法获取用户的“真实”ID或其用户名。无论如何你都不需要它们,你可以用你得到的ID来识别返回的用户 - 它被称为“应用程序范围ID”,并且它将在每个应用程序中保持不变。
如果您需要请求中的其他数据而不仅仅是ID和名称,则必须使用所记录的fields参数:https://developers.facebook.com/docs/graph-api/using-graph-api#fields