使用Expressjs进行FB登录,无需Passport.js或everyauth

6
我已经搜索了好几个小时,但是找不到一个不使用Passport或Everyauth的Express上Facebook登录解决方案。是否有关于nodejs的服务器端oAuth 2.0 FB登录的示例或教程?或者有没有一种方法可以使用默认的Express会话,并让passport仅处理初始身份验证而无需序列化/反序列化?
3个回答

2

我编写/维护express-stormpath库,可以为您完成此操作。

这是一个示例应用程序(完整示例):

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

var app = express();
app.use(stormpath.init(app, {
  application: 'https://api.stormpath.com/v1/applications/xxx',
  secretKey: 'some_long_random_string',
  enableFacebook: true,
  social: {
    facebook: {
      appId: 'xxx',
      appSecret: 'xxx',
    }
  },  
}));

app.listen(3000);

显然,这需要您创建一个Facebook应用程序并设置一些配置选项,本文档解释了如何完成:https://docs.stormpath.com/nodejs/express/product.html#use-facebook-login

希望有所帮助 =)


1
用了另一种方法解决了问题,但 stormpath 的工作真不错!肯定会好好研究的!看起来是解决整个身份验证问题的完整答案。 - anges244
谢谢!那就是我的想法 =) - rdegges

0

这将为您提供有关警报的数据,使用FB AppId

 <div id="fb-root"></div>
 <script src="https://connect.facebook.net/en_US/all.js"></script>
 <script>
           var facebookAppId = 'XXXXXX';
           var _fBAccessToken ='';
           window.fbAsyncInit = function() {
             FB.init({
                 appId: facebookAppId,
                 xfbml: true,
                 version: 'v2.0',
                 status: true,
                 cookie: true,
                 oauth: true
             });

 FB.getLoginStatus(function(response) {
      if ((response.status)&&(response.status=='connected')) {
                     userId = response.authResponse.userID;
                     _fBAccessToken = response.authResponse.accessToken;
                     FB.api('/me', function(responsed) {
                         alert(JSON.stringify(responsed))
                     },{scope:'public_profile,email'});
 })
</script>

这是前端代码... 在 Express.js 应用程序中如何实现? - anges244
当您获得身份验证(在警报上)时,请调用API将用户信息发送到此API并将其保存为新用户到您的数据库中。 - Muhammad Ali

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接