/ / Node.js Passport Facebook Overenie bez vrátenia e-mailu - node.js, mongodb, passport.js, mean-stack, passport-facebook

Node.js Passport Facebook Overenie bez vrátenia e-mailu - node.js, mongodb, passport.js, mean-stack, passport-facebook

Snažím sa nastaviť autentifikáciu Facebookupomocou pasu z node.js. Keď spustím aplikáciu a prejdem na adresu / auth / facebook, idem na stránku facebook, aby som povolil facebooku, aby mi vrátil e-mail. Ale po tom, čo som zaskočil ok, dostanem stránku (spätné volanie), ktorá hovorí "Žiadne e-maily spojené s týmto účtom!" Ktoré podľa kódu znamená, že profil.semils je null. Čo mi chýba?

Toto sú upozornenia, ktoré sa zobrazia pri spustení aplikácie. Neviem, či sú problémom.

express-session deprecated undefined resave option; provide resave option auth.js:44:37
express-session deprecated undefined saveUninitialized option; provide saveUninitialized option auth.js:44:37

Tu je autorizačný kód. Prechádzať intro MEAN stack kurzu M101X od edx.

function setupAuth(User, app) {
var passport = require("passport");
var FacebookStrategy = require("passport-facebook").Strategy;

// High level serialize/de-serialize configuration for passport
passport.serializeUser(function(user, done) {
done(null, user._id);
});

passport.deserializeUser(function(id, done) {
User.
findOne({ _id : id }).
exec(done);
});

// Facebook-specific
passport.use(new FacebookStrategy(
{
clientID: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
if (!profile.emails || !profile.emails.length) {
return done("No emails associated with this account!");
}

User.findOneAndUpdate(
{ "data.oauth": profile.id },
{
$set: {
"profile.username": profile.emails[0].value,
"profile.picture": "http://graph.facebook.com/" +
profile.id.toString() + "/picture?type=large"
}
},
{ "new": true, upsert: true, runValidators: true },
function(error, user) {
done(error, user);
});
}));

// Express middlewares
app.use(require("express-session")({
secret: "this is a secret"
}));
app.use(passport.initialize());
app.use(passport.session());

// Express routes for auth
app.get("/auth/facebook",
passport.authenticate("facebook", { scope: ["email"] }));

app.get("/auth/facebook/callback",
passport.authenticate("facebook", { failureRedirect: "/fail" }),
function(req, res) {
res.send("Welcome, " + req.user.profile.username);
});
}

module.exports = setupAuth;

odpovede:

1 pre odpoveď č. 1

Pokúsili ste sa pridať do bloku passport.use profilové profily, ako je navrhnuté v diskusnej karte v časti "Problém s autentifikáciou Facebooku"?