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('/');

次に、すべてのgetリクエストで、everyauth.loggedInがtrueであるかどうかを確認しようとしました。ただし、everyauth.loggedInは未定義であることが示されています。なんでそうなの?ユーザーがFacebookを使用してログインしたかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

0

これが役立つかどうかはわかりませんが、私は EveryAuth と Passport の両方を調査し、Facebook と Google に Passport を非常に迅速に実装することができました。認証のよりクリーンな実装のように見えます。

http://passportjs.org/

于 2013-01-09T18:52:29.730 に答える
0

ログインすると、 で説明したように「/」にリダイレクトされ.redirectPath('/');ます。

「/」のルートで、 を確認できますeveryauth.loggedIn

詳細については、こちらを参照してください。ユーザーが既にログインしているかどうかを確認するにはどうすればよいですか? (everyauth、node.js)

お役に立てれば!

于 2013-01-24T19:37:31.310 に答える