首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将passport facebook数据传递给angular?

如何将passport facebook数据传递给angular?
EN

Stack Overflow用户
提问于 2017-06-19 18:33:45
回答 1查看 345关注 0票数 0

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

下面是我的社交验证码,如果它能有任何帮助的话。

代码语言:javascript
复制
    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的前端链接

代码语言:javascript
复制
<a href="/auth/facebook" target="_blank">Facebook Login</a>

任何帮助都将受到高度的感谢。期待您的帮助,提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-19 23:23:48

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

另外,引用另一篇文章:

对于要被视为同源的两个文档,协议>(http/https)、域和端口(默认值为80或:xx)必须是>indentical

因此,您需要在node.js服务器上启用CORS。一种简单的方法是使用Express-cors npm

代码语言:javascript
复制
const cors = require('cors')
const app = express()

app.use(cors())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44628233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档