Es allí cualquier Node.js la biblioteca de cliente para hacer OAuth y OAuth2 llamadas a la API de Twitter, Facebook, Google, LinkedIn, etc.?

Hice un montón de googlear y la mejor que pude encontrar fue:
https://github.com/ciaranj/node-oauth

Hay bibliotecas en la parte superior de este, que ofrecen envolturas para hacer llamadas a la API de Twitter, Facebook, Google, LinkedIn, etc. a decir de publicar un tweet o DM a alguien o conseguir la lista de amigos o publicar un enlace a Facebook, G+, et al.?

Soy consciente de Passport.js, pero su uso está limitado a la obtención de la autenticación y autorización de estos sitios sociales. Más allá de que, en la actualidad tenemos que individualizar las llamadas a la API a través del nodo de oauth para realizar las actividades mencionadas anteriormente.

He perdido de algo? Es usted consciente de cualquier tipo de bibliotecas?

OriginalEl autor pavanlimo | 2014-01-15

3 respuestas

  1. 22

    Una vez que usted ha utilizado Passport.js para obtener un token de acceso, recomiendo (y personalmente uso) solicitud para hacer todas las llamadas a la API para servicios de terceros.

    En mi opinión, específicas del proveedor de contenedores acaba de agregar complicación innecesaria. La mayoría de APIs RESTful son muy simples peticiones HTTP. Capas adicionales sólo se interpone en el camino y añadir los errores a la pista de abajo. Además, al seguir con el request, usted puede integrar con cualquier tercero el uso de la misma, familiar módulo.

    Estoy usando passport.js para facebook y twitter es, existe alguna manera de que me puede llegar a facebook y twitter a tus amigos a través de él ?
    Creo que restler también es una buena lib utilizar en lugar de la solicitud.
    Tener que reinventar la rueda cada vez que usted desea utilizar un nuevo servicio API es una pérdida de tiempo
    Yo personalmente uso más Puro como un genérico RESTO del API de la biblioteca. Está construido en la parte superior de la solicitud, pero con características específicas para las Api de REST. También estoy usando Grant como alternativa para la obtención de los tokens de acceso.

    OriginalEl autor

  2. 3

    CloudRail podría ser una buena alternativa. Proporciona una abstracción de la API para la mayoría de las redes sociales y se encarga de la autenticación bastante bien. Aquí está un ejemplo:

    const services = require("cloudrail-si").services;
    //let profile = new services.GooglePlus(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
    //let profile = new services.GitHub(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
    //let profile = new services.Slack(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
    //let profile = new services.Instagram(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
    //...
    let profile = new services.Facebook(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
    
    profile.getFullName((err, fullName) => {
        if (err) throw err;
        console.log("User's full name is " + fullName);
    });
    
    profile.getEmail((err, email) => {
        if (err) throw err;
        console.log("User's email address is " + email);
    });

    OriginalEl autor

  3. 1

    Estoy implementación de Passport.js así y necesaria para tirar de solicitudes adicionales más allá de la autenticación.
    Tomé Jared Hanson ‘petición’ sugerencia y se utiliza la cuenta de Twitter se encuentra hacia la parte inferior de la README en el ‘petición’ github. Después de la inicial var request = require('request'); y var qs = require('querystring'); aquí es el Twitter de pasaporte autenticar & obtener followers_count ejemplo para la enseñanza de solicitud está anidada dentro de la autenticación de la función de devolución de llamada:

    passport.use(new TwitterStrategy({
      //var configAuth = require('./auth');
      consumerKey       : configAuth.twitterAuth.consumerKey,
      consumerSecret    : configAuth.twitterAuth.consumerSecret,
      callbackURL       : configAuth.twitterAuth.callbackURL,
      passReqToCallback : true
    },
    
    function(req, token, tokenSecret, profile, done) {
    
      process.nextTick(function() {
    
        if (!req.user) {
    
          User.findOne({ 'twitter.id' : profile.id }, function(err, user) {
            if (err)
              return done(err);
            if (user) {
              if (!user.twitter.token) {
                user.twitter.token       = token;
                user.twitter.tokenSecret = tokenSecret;
                user.twitter.username    = profile.username;
                user.twitter.displayName = profile.displayName;
    
                //[ADDED] Twitter extended API calls using 'request' and 'querystring'
                var oauth = { 
                  consumer_key    : configAuth.twitterAuth.consumerKey, 
                  consumer_secret : configAuth.twitterAuth.consumerSecret, 
                  token           : token, 
                  token_secret    : tokenSecret
                }
    
                var url = 'https://api.twitter.com/1.1/users/show.json?';
    
                var params = { 
                  user_id: profile.id
                }
    
                url += qs.stringify(params)
                request.get({url:url, oauth:oauth, json:true}, function (e, r, result) {
                  //Get followers_count here
                  user.twitter.followers = result.followers_count;
    
                  //[MOVED] db.save moved into second callback function
                  user.save(function(err) {
                    if (err)
                      throw err;
                    return done(null, user);
                  });
                });
                //[END ADD]        
              }
              return done(null, user);
            } else {
              var newUser                 = new User();
    
              newUser.twitter.id          = profile.id;
              newUser.twitter.token       = token;
              newUser.twitter.tokenSecret = tokenSecret;
              newUser.twitter.username    = profile.username;
              newUser.twitter.displayName = profile.displayName;
    
              //[ADDED] Twitter extended API calls using 'request' and 'querystring'
              var oauth = { 
                consumer_key    : configAuth.twitterAuth.consumerKey, 
                consumer_secret : configAuth.twitterAuth.consumerSecret, 
                token           : token, 
                token_secret    : tokenSecret
              }
    
              var url = 'https://api.twitter.com/1.1/users/show.json?';
    
              var params = { 
                user_id: profile.id
              }
    
              url += qs.stringify(params)
              request.get({url:url, oauth:oauth, json:true}, function (e, r, result) {
                //Get followers_count here
                newUser.twitter.followers = result.followers_count;
    
                //[MOVED] db.save moved into second callback function
                newUser.save(function(err) {
                  if (err)
                    throw err;
                  return done(null, newUser);
                });
              });
              //[END ADD]     
    
            }
          });
        } else {
          var user                 = req.user;
    
          user.twitter.id          = profile.id;
          user.twitter.token       = token;
          user.twitter.tokenSecret = tokenSecret;
          user.twitter.username    = profile.username;
          user.twitter.displayName = profile.displayName;
    
          //[ADDED] Twitter extended API calls using 'request' and 'querystring'
          var oauth = { 
            consumer_key    : configAuth.twitterAuth.consumerKey, 
            consumer_secret : configAuth.twitterAuth.consumerSecret, 
            token           : token, 
            token_secret    : tokenSecret
          }
    
          var url = 'https://api.twitter.com/1.1/users/show.json?';
    
          var params = { 
            user_id: profile.id
          }
    
          url += qs.stringify(params)
          request.get({url:url, oauth:oauth, json:true}, function (e, r, result) {
            //Get followers_count here
            user.twitter.followers = result.followers_count;
    
            //[MOVED] db.save moved into second callback function
            user.save(function(err) {
              if (err)
                throw err;
              return done(null, user);
            });
          });     
          //[END ADD]
        }
      });
    }));

    Muchas gracias a Javier por ser muy generoso con su ayuda y para la creación de Passport.js!

    OriginalEl autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *