gpt4 book ai didi

node.js - 在单页应用程序中使用 passportJS 或 everyauth

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:20 28 4
gpt4 key购买 nike

我正在使用带有 express 的 Node 作为我的单页应用程序的服务器(我正在使用 AngularJS,但这与问题无关)。我需要使用 passportJS 或 everyauth 添加身份验证功能。我不能使用其他包。我尝试了很多次让身份验证在我的单页应用程序上工作,但我没有在没有页面刷新的情况下设法做到这一点。我正在寻找一种连接 facebook 的方法,这是我的前端代码:

function facebookLogin(callback) {
FB.login(function (response) {
if (!response.authResponse) {
console.log('Facebook login failed', response);
callback(false, response);
} else {
console.log('Facebook login complete', response);
callback(true, response);
}
});
}

facebookLogin(function(isConnected, response) {
if (isConnected) {
// HERE I NEED TO CALL SERVER SIDE AND CONNECT USING PASSPORT OR EVERYAUTH
// I WANT TO DO IT WITHOUT PAGE REFRESH
}
});

知道我该怎么做吗?或者有例子的地方?请记住,我需要连接无需刷新页面

最佳答案

我设置的解决方案是弹出另一个调用 passport.js 的窗口(如 FB.login),然后当进程结束时窗口自行关闭,主窗口监控它。(顺便说一句,它与 FB.login 代码非常相似,但它仍然利用 passport.js 轻松集成)

  1. 设置标准 passport.js

含义:

app.get('/auth/facebook', passport.authenticate('facebook', { scope:['email']}));
app.get('/auth/facebook/callback', passport.authenticate('facebook', {failureRedirect:'/'}), successRedirect);

passport.use(new FacebookStrategy({
clientID: Settings.FB.CLIENT_ID,
clientSecret: Settings.FB.CLIENT_SECRET,
callbackURL: Settings.FB.CALLBACK_URL
},myHandler;
}
));

function successRedirect(){
res.send('<html><head><script type="text/javascript">window.close();</script></head></html>');
}
  1. 关于

客户端:

<a onclick="loginShopetti('/auth/google')"><img src="/imgs/FB-button.png"></a>

<script>
function loginShopetti(url){
var win = window.open(url,'popUpWindow','centerscreen=true');
var intervalID = setInterval(function(){
if (win.closed) {

//***** DO MY after login code.********

clearInterval(intervalID);
}
}, 100);
}
</script>

关于node.js - 在单页应用程序中使用 passportJS 或 everyauth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366139/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com