2010-12-19 9 views
21

Widziałem wiele narzędzi do pracy z połączeniami node.js i facebook. Jednak wiele z nich wydaje się niekompletna, zbyt skomplikowana (nie abstrakcyjna) lub nie jest już aktualizowana/utrzymywana.Co to jest najlepsza biblioteka połączeń facebook dla node.js?

Znalazłem te trzy projekty:

https://github.com/DracoBlue/node-facebook-client

https://github.com/dominiek/node-facebook

https://github.com/egorFiNE/facebook-connect

https://github.com/ciaranj/node-oauth

Oto jeden z autorów nawet omawia dlaczego znowu wzniósł rękę , z powodu niedociągnięć w innych implementacjach :

http://groups.google.com/group/nodejs/browse_thread/thread/bb46cb08e51fdda6

Czy ktoś ma prawdziwe doświadczenie rzeczywiście uwierzytelniania użytkowników i przechowywania ich Facebook ID w bazie danych przy użyciu node.js i Facebook Connect?

Mam przeczucie, że odpowiedź brzmi prawie nie i będę musiał zbudować na jednym z powyższych systemów, aby było o wiele prostsze, ale chciałem najpierw sprawdzić.

Edit: Uwaga upewnić użyć stabilnej wersji node.js

Odpowiedz

17

Nie znalazłeś ciaranj za connect-auth

const fbId = ""; #x 
const fbSecret = ""; #y 
const fbCallbackAddress= "http://localhost:4000/auth/facebook"; 
//var RedisStore = require('connect-redis'); 
var express= require('express'); 
var auth= require('connect-auth') 
var app = express.createServer(); 
app.configure(function(){ 
    app.use(express.cookieDecoder()); 
    app.use(express.logger()); 
    //app.use(connect.session({ store: new RedisStore({ maxAge: 10080000 }) })); 
    app.use(express.session()); 
    app.use(auth([ 
    auth.Facebook({appId : fbId, appSecret: fbSecret, scope: "email", callback: fbCallbackAddress}) 
    ])); 
}); 


app.get('/logout', function(req, res, params) { 
    req.logout(); 
    res.writeHead(303, { 'Location': "/" }); 
    res.end(''); 
}); 

app.get('/', function(req, res, params) { 
    if(!req.isAuthenticated()) { 
     res.send('<html>            \n\ 
      <head>            \n\ 
      <title>connect Auth -- Not Authenticated</title> \n\ 
      <script src="http://static.ak.fbcdn.net/connect/en_US/core.js"></script> \n\ 
      </head><body>            \n\ 
      <div id="wrapper">        \n\ 
       <h1>Not authenticated</h1>      \n\ 
       <div class="fb_button" id="fb-login" style="float:left; background-position: left -188px">   \n\ 
       <a href="/auth/facebook" class="fb_button_medium">  \n\ 
        <span id="fb_login_text" class="fb_button_text"> \n\ 
        Connect with Facebook     \n\ 
        </span>         \n\ 
       </a>           \n\ 
       </div></body></html>'); 
    } else { 
     res.send(JSON.stringify(req.getAuthDetails())); 
    } 
}); 

// Method to handle a sign-in with a specified method type, and a url to go back to ... 
app.get('/auth/facebook', function(req,res) { 
    req.authenticate(['facebook'], function(error, authenticated) { 
    if(authenticated) { 
     res.send("<html><h1>Hello Facebook user:" + JSON.stringify(req.getAuthDetails()) + ".</h1></html>") 
     } 
     else { 
     res.send("<html><h1>Facebook authentication failed :(</h1></html>") 
     } 
    }); 
}); 

app.listen (4000);

facebook settings

+0

Wydaje się pracować dużo na uboczu, ale w dół po prostu wisi na Facebooks przekierować do/auth/facebook ... i nic nie robi – Travis

+1

działa jak czar dla mnie! Musisz ustawić const fbCallbackAddress = "http: // localhost: 4000/auth/facebook"; zmiana kursowa localhost: 4000/part – Alfred

+0

trochę zmieniono fragment. Musisz podać kursor określający zmienne oprogramowania pośredniego. – Alfred

1

Użyłem everyauth Brian Noguchi użytkownika. Działa w/node.js v.0.4.x. Możesz znaleźć to here.

Ma natywną obsługę mongodb przy użyciu wtyczki mongoose-auth, ponownie napisanej przez Briana.

8

Uważam, że passport-facebook jest dość prosty i użyteczny.
Podoba mi się także, że podstawowy moduł paszportowy ma ponad 80 strategii auth.
(np. Twitter, google, foursquare, github, digg, dropbox).

od twórcy github README:

// Set up the strategy 
passport.use(new FacebookStrategy({ 
     clientID: FACEBOOK_APP_ID, 
     clientSecret: FACEBOOK_APP_SECRET, 
     callbackURL: "http://localhost:3000/auth/facebook/callback" 
    }, 
    function(accessToken, refreshToken, profile, done) { 
     User.findOrCreate({ facebookId: profile.id }, function (err, user) { 
      return done(err, user); 
     }); 
    } 
)); 

// Use the authentication 
app.get('/auth/facebook', 
    passport.authenticate('facebook'), 
    function(req, res){ 
     // The request will be redirected to Facebook for authentication, so 
     // this function will not be called. 
}); 

app.get('/auth/facebook/callback', 
    passport.authenticate('facebook', { failureRedirect: '/login' }), 
    function(req, res) { 
     // Successful authentication, redirect home. 
     res.redirect('/'); 
}); 
+0

Użyłem również tej biblioteki. Działa dobrze na potrzeby uwierzytelniania za pośrednictwem Facebooka. – Jorre

Powiązane problemy