sein Ich verwende Node.js
und passport facebook strategy
Client App anmelden.Passfacebook Strategie throw Daten müssen Zeichenfolge mit Node.js
Ich folgte den Passdokument aber immer noch einen Fehler: Daten müssen eine Zeichenfolge oder ein Puffer sein.
Strategie leitet auf Facebook-Seite sehr gut, aber nach dem Test akzeptiert Bedingungen der App und leitet es automatisch zur Startseite der App diesen Fehler werfen:
StatusCodeError: 500 - {"error":"Data must be a string or a buffer"}
Das ist mein Code aus auth.js
ist, wo Strategie geschrieben wird. Ich verwende jsonwebtoken
Modul, um Benutzer-ID zu signieren.
exports.facebookStrategy = new FacebookStrategy({
clientID: config.auth.facebook.clientID,
clientSecret: config.auth.facebook.clientSecret,
callbackURL: config.auth.facebook.callbackURL,
profileFields: ['id', 'displayName', 'email']
}, function (accessToken, refreshToken, profile, done) {
var userProfile = {
username: profile._json.id,
name: profile._json.name,
email: profile._json.email,
facebook: true
}
findOrCreate(userProfile, (err, user) => {
if (err) {
return done(err);
}
// use token lib to sign id
jwt.sign({ userId: user.username }, config.secret, {}, (e, token) => {
if (e) {
return done(e);
}
user.token = token;
return done(null, user);
})
});
function findOrCreate (user, callback) {
client.getUser(user.username, (err, usr) => {
if (err) {
return client.saveUser(user, callback);
}
callback(null, usr);
})
}
});
Mit einem console.log
dachte ich, dass Fehler aus diesem Code-Block kommt aus:
...
findOrCreate(userProfile, (err, user) => {
if (err) {
console.log(err.message); // it returns 500 - {"error":"Data must be a string or a buffer"}
return done(err);
}
ich profile._json
-profile._raw
zu ändern versucht. Alle Werte sind jedoch undefined
.
Ich verwende Knoten 6.10.0 Version. und passport: "^0.3.2"
, "passport-facebook": "^2.1.1"
.
Wie kann ich lösen diesen Fehler?