3

我在使用everyauth 时遇到了严重的问题。我需要的只是facebook登录。为此,我正在尝试使用everyauth 的示例。一旦我进行了 Facebook 身份验证,如果用户登录或未登录/获取他的 Facebook 信息,我如何检查每个页面。我所做的是

var exp = require('express');
var app = exp.createServer();

var conf = require('/Users/lakeshkansakar/clicker/node_modules/everyauth/example/conf')
var everyauth = require('everyauth');

everyauth.debug = true;

var usersById = {};
var nextUserId = 0;

function addUser (source, sourceUser) {
  var user;
  user = usersById[++nextUserId] = {id: nextUserId};
  user[source] = sourceUser;
  return user;
}

var usersByFbId = {};
var usersByTwitId = {};

everyauth.everymodule
  .findUserById( function (id, callback) {
    callback(null, usersById[id]);
  });

everyauth
  .facebook
    .appId(conf.fb.appId)
    .appSecret(conf.fb.appSecret)
    .findOrCreateUser( function (session, accessToken, accessTokenExtra, fbUserMetadata) {
      return usersByFbId[fbUserMetadata.id] || (usersByFbId[fbUserMetadata.id] = addUser('facebook', fbUserMetadata));;
    })
    .redirectPath('/');

everyauth
  .twitter
    .consumerKey(conf.twit.consumerKey)
    .consumerSecret(conf.twit.consumerSecret)
    .findOrCreateUser( function (sess, accessToken, accessSecret, twitUser) {
      return usersByTwitId[twitUser.id] || (usersByTwitId[twitUser.id] = addUser('twitter', twitUser));;
    })
    .redirectPath('/');

在每个获取请求中,我都尝试检查everyauth.loggedIn 是否为真。但是,everyauth.loggedIn 显示为未定义。为什么会这样?如何检查用户是否使用 facebook 登录?

4

2 回答 2

0

登录后,您将被重定向到“/”,如.redirectPath('/');.

在“/”的路线中,您可以检查everyauth.loggedIn.

您可以在此处查看更多详细信息。如何检查用户是否已登录?(everyauth,node.js)

希望这可以帮助!

于 2013-01-24T19:37:31.310 回答
0

不确定这是否有帮助,但我研究了 EveryAuth 和 Passport,并且能够非常快速地为 Facebook 和 Google 实施 Passport。它看起来像是一个更简洁的身份验证实现。

http://passportjs.org/

于 2013-01-09T18:52:29.730 回答