2011-04-28 3 views
2

En ce moment j'utilise Facebook Connect de mongoose-auth. Tout fonctionne correctement, et les utilisateurs sont créés/connectés via mon serveur mongodb.Est-ce que quelqu'un a utilisé Mongoose-auth? Comment gérez-vous findOrCreateUsers?

Cependant, je veux remplacer findOrCreateUsers, car je veux assigner un "code" aléatoire à chaque nouvel utilisateur lors de son inscription, et le placer dans son profil db.users.

J'ai donc regardé dans le mongoose-auth/lib/facebook, et j'ai copié ces 3 fichiers du module facebook dans mon propre répertoire [everyauth.js, index.js, schema.js]. Pour effectuer un test simple, j'ai inclus mon propre fichier everyauth.js dans mon répertoire et j'ai utilisé sa méthode findOrCreateUsers à la place de celle par défaut.

Cela fonctionne, mais il y a une erreur. Après la connexion/création de l'utilisateur, req.user est indéfini. (req.loggedIn montre Vrai, yay!)

Je sais que c'est une nouvelle bibliothèque, mais si vous l'avez utilisé (ou sais beaucoup au sujet de Node.js), j'apprécierais vraiment si vous pourriez m'aider. Je suis sur # node.js sur irc.freenode.net. Le pseudo est "xeodox". Si vous pouviez m'aider je l'apprécierais vraiment !!

Je l'emportaient sur findOrCreateUser en faisant cela au module facebook dans mes app.js:

findOrCreateUser: function (sess, accessTok, accessTokExtra, fbUser) { 
    var promise = new Promise() 
     , self = this; 
    // TODO Check user in session or request helper first 
    //  e.g., req.user or sess.auth.userId 
    this.User()().findOne({'fb.id': fbUser.id}, function (err, foundUser) { 
     if (foundUser) 
     return promise.fulfill(foundUser); 
     self.User()().createWithFB(fbUser, accessTok, accessTokExtra.expires, function (err, createdUser) { 
     return promise.fulfill(createdUser); 
     }); 
    }); 
    return promise; 
    } 

Répondre

3

Pas besoin de copier ces fichiers dans votre répertoire. Il suffit de faire ce qui suit dans votre configuration mangouste-auth:

facebook: { 
    everyauth: { 
     myHostname: 'http://localhost:3000' 
    , appId: 'YOUR APP ID HERE' 
    , appSecret: 'YOUR APP SECRET HERE' 
    , redirectPath: '/home' 
    , findOrCreateUser: function (session, accessToken, fbUserMetadata) { 
     } 
    } 
} 

Pour obtenir une aide sur le req.user non défini, fichier un issue sur github avec un lien vers un autonome gist pour recréer la question, et je peux aider tu sors.

Questions connexes