2016-05-06 12 views
2

ich zur Zeit versucht, Facebooks OAUTH zu implementieren, indem Koa-Passport und Koajs 2Knoten Facebook Passport gibt nur bestimmte Felder unabhängig von gesendet Umfang

Every mit adaequat und ich kann anmelden und was nicht, aber unabhängig davon, was ich sende in der Umfang ich immer nur:

{ passport: 
    { user: 
     { id: '1015401', 
     username: undefined, 
     displayName: 'John Doe', 
     name: [Object], 
     gender: undefined, 
     profileUrl: undefined, 
     provider: 'facebook', 
     _raw: '{"name":"John Doe","id":"1015401"}', 
     _json: [Object] } } } 

ich habe versucht, das Hinzufügen

scope: ['email', 'public_profile'], die auf Facebooks Ende scheint zu funktionieren, weil ich die Informationen meiner App, die al anfordert sehen Das Zeug ist da.

Aber wenn ich ok klicke und ich zurück zu meiner App weitergeleitet werde, fehlen mir wieder Dinge wie ein profile_pic Feld und email Feld. Jede Information, wie man diese Felder zurückbekommt, wäre großartig, danke. Ich würde ein Problem auf der GitHub-Seite öffnen, aber es gibt Probleme aus dem Jahr 2013, es scheint nicht sehr gepflegt zu werden.

Antwort

0

hatte ich das gleiche Problem und löste es durch die folgenden Schritte ausführen:

in passport.js fügen Sie die Zeile mit profileFields:

passport.use(new FacebookStrategy({ 
     clientID: clientID, 
     clientSecret: clientSecret, 
     callbackURL: callbackURL, 
     profileFields: ['id', 'name', 'emails'] 
     }, 

'emails' eine Reihe von E-Mails angezeigt werden können, erhalten so die erste Wert:

newUser.facebook.email = profile.emails[0].value; 

Lassen Sie uns wissen, ob das für Sie gearbeitet hat, vielleicht wird das sein hilfreich für andere.