Ich bin der Pass-Facebook-Plugin in einer NextJS App und mein Testskript definiert die Strategie, wie unten mit:Passport Facebook-Strategie liefert undefinierte Werte
// Configure Passport
// ---------------------------------------------------------------
passport.use(new LocalStrategy(User.authenticate()));
passport.use(new FacebookStrategy({
clientID: process.env.FACEBOOK_APP_ID,
clientSecret: process.env.FACEBOOK_APP_SECRET,
callbackURL: process.env.FACEBOOK_APP_CALLBACK,
},
function (accessToken, refreshToken, profile, done) {
console.log(profile);
}
));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
// ---------------------------------------------------------------
Meine Authentifizierungs Routen sind:
// Facebook
router.get('/auth/facebook', passport.authenticate('facebook'));
router.get('/facebook/callback',
passport.authenticate('facebook', {
successRedirect: '/success',
failureRedirect: '/failure',
}),
);
Alles, was ich vorerst versuche, ist, alle von Facebook zurückgegebenen Werte bei einer erfolgreichen Authentifizierung anzuzeigen. Die Authentifizierung funktioniert wie erwartet, aber Facebook scheint undefined
für die meisten Schlüssel im profile
Objekt zurückkehren:
{ id: '1234567812345677',
username: undefined,
displayName: 'John Doe',
name:
{ familyName: undefined,
givenName: undefined,
middleName: undefined },
gender: undefined,
profileUrl: undefined,
provider: 'facebook',
_raw: '{"name":"John Doe","id":"1234567812345677"}',
_json: { name: 'John Doe', id: '1234567812345677' } }
Alles, was ich bekommen, ist die displayName
und id
; alles andere ist undefined
. Was läuft falsch? Eine sehr ähnliche Frage wurde hier schon früher gestellt, aber keine der Antworten (keine akzeptierte Antwort) bot das Problem an.
Komplette Schätzung - überprüfen Sie Ihre Anwendungsbereiche. Sie haben wahrscheinlich keine Berechtigung für vollständige Profilinformationen. –
Ich habe keinen expliziten Geltungsbereich für meinen Authentifizierungsaufruf angegeben. Sollte etwas wie * Benutzername * nicht als Teil des Standardbereichs verfügbar sein? Alle Tutorials, auf die ich online gestoßen bin (einschließlich der PassportJS-Dokumentation), weisen Sie an, einen Bereich anzugeben, falls Sie zusätzlichen Zugriff benötigen, z. B. Zeitleiste usw. – TheLearner
Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem:/ –