2017-06-19 4 views
0

Ich benutze Pass Facebook für Benutzer-Authentifizierung in meiner Web-App. Mein Node Backed läuft auf localhost: 8080 und eckiges Frontend läuft auf localhost: 4200. Wie kann ich die von Facebook empfangenen Daten speichern, in einer Datenbank speichern und diese Datenbankdaten dann an mein eckiges Frontend übergeben? Ich habe so viele Anleitungen und Tutorials online ausprobiert, alle laufen auf derselben Domain, aber meine sind andere Domains (8080 & 4200).Wie Pass Facebook Daten zu eckigen übergeben?

Unten ist mein sozialer Auth-Code, wenn es irgendeine Hilfe sein kann.

module.exports = function(app, db) { 



var express   = require('express'), 
     ObjectID   = require("mongodb").ObjectID, 
     passport   = require('passport'), 
     FacebookStrategy = require('passport-facebook').Strategy, 
     GoogleStrategy = require('passport-google-oauth2').Strategy, 
     LinkedInStrategy = require('passport-linkedin'); 

    var authConfig  = require('../config/socialConfig'); 


    var session = require('express-session'); 

    app.use(passport.initialize()); 
    app.use(passport.session()); 
    app.use(session({ 
     secret: 'keyboard cat', 
     resave: false, 
     saveUninitialized: true, 
     cookie: { secure: false } 
    })) 

    passport.serializeUser(function(user, done) { 
     done(null, user.id); 
    }); 

    passport.deserializeUser(function(id, done) { 
     User.findById(id, function(err, user) { 
     done(err, user); 
     }); 
    }); 

    passport.use(new FacebookStrategy({ 
     clientID: authConfig.facebookAuth.clientID, 
     clientSecret:authConfig.facebookAuth.clientSecret , 
     callbackURL: authConfig.facebookAuth.callbackURL, 
     profileFields: ['id', 'displayName', 'photos', 'email'] 
    }, 
     function(token, refreshToken, profile, done) { 

      console.log("Hello" + profile); 
      // User.findOrCreate(..., function(err, user) { 
       // if (err) { return done(err); } 
       // done(null, user); 
      // }); 
      done(null, profile); 
     } 
    )); 


    app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' })); 

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

    } 

Und unten ist mein Frontend Link auf Facebook Auth

<a href="/auth/facebook" target="_blank">Facebook Login</a> 

Jede Hilfe wird sehr geschätzt. Ich freue mich auf etwas Hilfe, danke im Voraus.

Antwort

0

Da sich die Node.js-App auf dem anderen Port befindet, müssen Sie die vollständige URL für die API/auth/facebook (http://localhost:4020/auth/facebook) angeben.

Auch unter Angabe der weiteren Beitrag:

Für zwei Dokumente in Betracht gezogen werden, um den gleichen Ursprung haben, das Protokoll> (http/https), die Domäne und der Port (Standardeinstellung 80 oder: xx) muss> identisch sein

Sie müssen also CORS auf Ihrem node.js Server aktivieren. Ein einfacher Weg, es zu tun, ist Express-Cors npm

const cors = require('cors') 
const app = express() 

app.use(cors()) 
zu verwenden