【问题标题】:How to pass passport facebook data to angular?如何将护照facebook数据传递给angular?
【发布时间】:2017-11-21 12:46:36
【问题描述】:

我在我的网络应用程序中使用护照 facebook 进行用户身份验证。我支持的节点在 localhost:8080 上运行,角度前端在 localhost:4200 上运行。如何保存从 Facebook 收到的数据,将其保存到数据库,然后将该数据库数据传递到我的 Angular 前端?我在网上尝试了很多指南和教程,所有这些都在同一个域上运行,但我的是不同的域(8080 和 4200)。

以下是我的社交验证码,如果有帮助的话。

    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' }));

    }

下面是我到 facebook auth 的前端链接

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

任何帮助将不胜感激。期待一些帮助,在此先感谢。

【问题讨论】:

    标签: angularjs node.js facebook passport.js


    【解决方案1】:

    由于您的 Node.js 应用程序位于另一个端口,因此您需要指定 /auth/facebook API (http://localhost:4020/auth/facebook) 的完整 URL。

    另外,引用另一篇文章:

    要被认为具有相同来源的两个文档,协议 >(http/https)、域和端口(默认 80 或 :xx)必须 >indentical

    所以你需要在你的 node.js 服务器上启用 CORS。一个简单的方法是使用 Express-cors npm

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

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2014-07-17
      • 2020-12-17
      • 2019-01-06
      • 2021-08-18
      • 1970-01-01
      相关资源
      最近更新 更多