Facebook не возвращает электронную почту пользователя
Я использую passport-facebook для реализации ручного метода входа в Facebook, код, реализующий его, находится в соединение J, поэтому следующий код актуален:
var Strategy = require('passport-facebook').Strategy;
passport.use(new Strategy({
clientID: conf.facebook.apiKey,
clientSecret: conf.facebook.secret,
callbackURL: conf.baseURL + 'auth/facebook/callback'
}, exports.callback));
app.get('/auth/facebook',
passport.authenticate('facebook', { authType: 'rerequest', scope: conf.facebook.scope ? conf.facebook.scope.split(' ') : [ 'public_profile,email' ] }));
URL, который отправляется
https://www.facebook.com/dialog/oauth?auth_type=rerequest&response_type=code&redirect_uri=http%3A%2F%2Flocal.thingswelove.org%2Fauth%2Ffacebook%2Fcallback&scope=public_profile%2Cemail&client_id=MY CLIENT ID HERE
Я сделал первоначальный запрос, в котором я не зарегистрировал область действия должным образом, поэтому я добавил параметр rerequest к более поздним запросам.
Я тестирую со своей учетной записью и, конечно, знаю, что Facebook знает мою электронную почту. Однако данные, которые я получаю, выглядит так
{
"facebookId": "numerical id",
"profile": {
"id": "numerical id",
"displayName": "my name",
"name": {},
"provider": "facebook",
"_raw": "{\"name\":\"my name\",\"id\":\"numerical id\"}",
"_json": {
"name": "my name",
"id": "numerical id"
}
}
}
Так или иначе, я хотел бы заставить вещи работать так, чтобы я получил электронное письмо, возвращенное в моем объекте данных.