2015-12-27 4 views
-2

Я использую API Facebook v2.5.Facebook-паспортная стратегия не возвращает поля электронной почты

маршрут:

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

конфигурации:

passport.use(new FacebookStrategy({ 

     clientID: CLIENTID, 
     clientSecret: CLIENTSECRET, 
     callbackURL: callbackURL, 
     profileFields: ["emails", "displayName", "gender"] 
    }, 

    function (token, refreshToken, profile, done) { 
     console.log(profile) 

     ... 
    })); 

профиль не имеет поля "электронная почта".

Я попытался прохождения сферы как массив слишком

scope : ['email'] 
+0

Возможный дубликат [паспорта-facebook не получите по электронной почте] (HTTP://stackoverflow.com/questions/25832763/passport-facebook-dont-get-email) –

+0

за исключением того факта, что у моего кода есть все предоставленные решения. –

ответ

0

Я просто была такая же проблема: с помощью моей тестовой учетной записи и работы с областями, я вдруг «потерял» адрес электронной почты, нет возможности получить его снова используя все намеки, найденные здесь.

С любопытством, используя новую учетную запись на facebook, появился адрес электронной почты.

=> Я пошел на свою тестовую учетную запись в facebook и отменил все права на мое приложение. Впоследствии я снова зашел в свое приложение и предоставил все необходимые права. С тех пор я снова получаю адрес электронной почты.

Надеюсь, это поможет.

+0

Как отменить права приложения? Имея ту же проблему, не вижу, где FB позволяет мне управлять правами. –

+0

@DanDonaldson: перейдите в свою учетную запись FB к настройкам, а затем к приложениям. Там вы должны увидеть все приложения, используя свою учетную запись FB для входа. Выберите приложение и отредактируйте права доступа или отмените их. – Chrigel

0

Убедитесь, что вы определить «электронная почта», а область действия Логин, то вы могли бы получить его, когда вы спросите graph.facebook.com:

$url = 'https://www.facebook.com/dialog/oauth'; 
$params = array(
    'client_id' => $this->strategy['app_id'], 
    'redirect_uri' => $this->strategy['redirect_uri'], 
    'scope' => 'email', 
);