2015-11-21 10 views
10

Sono molto nuovo all'integrazione di siti social in un sito Web. In qualche modo sono riuscito a integrare Facebook, ma non ho idea di come integrare Twitter.Autenticazione Twitter in Codebird JS

Desidero accedere tramite un account Twitter, quindi ottenere il nome utente e alcuni altri dati da Twitter. Ho una chiave del consumatore e un segreto del consumatore. Non sono sicuro di come procedere da qui e le mie ricerche su Google non hanno finora aiutato.

sto provando con js codebird:

$(function() { 
    $('#twitter').click(function(e) { 
     e.preventDefault(); 
     var cb = new Codebird; 
     cb.setConsumerKey("redacted", "redacted"); 
     cb.__call(
      "oauth_requestToken", 
      { oauth_callback: "http://127.0.0.1:49479/" }, 
      function (reply, rate, err) { 
       if (err) { 
        console.log("error response or timeout exceeded" + err.error); 
       } 
       if (reply) { 
        // stores it 
        cb.setToken(reply.oauth_token, reply.oauth_token_secret); 

        // gets the authorize screen URL 
        cb.__call(
         "oauth_authorize", 
         {}, 
         function (auth_url) { 
          window.codebird_auth = window.open(auth_url); 
         } 
        ); 
       } 
      } 
     ); 
     cb.__call(
      "account_verifyCredentials", 
      {}, 
      function(reply) { 
       console.log(reply); 
      } 
     );     
    }) 
}); 

Ma ho

Le credenziali non consentono l'accesso a questa risorsa

Come posso risolvere questo e ottenere il dati utente? Sono aperto all'utilizzo di un'implementazione Twitter alternativa.

+0

OAuth di richiamata su localhost - come deve quel lavoro? O è solo per la copia del codice qui? –

+0

localhost va bene - Twitter sarà felicemente reindirizzato a qualsiasi URI, e OP probabilmente ha una configurazione di pagina dev lì. –

+1

Rimuovere la chiave utente e il segreto dell'API di Twitter dal post e rigenerarli su https://apps.twitter.com/. Sono destinati a essere tenuti segreti. – Jublo

risposta

3

Non è possibile chiamare cb._call("account_verifyCredentials"... lì.

Il codice ha solo un token di richiesta, NON un token di accesso, che riceverete solo dopo che l'utente ha autorizzato la vostra app (sul popup dell'autore di Twitter).

Si sta utilizzando il metodo "URL di richiamata senza PIN", come documented on the README. Quindi è necessario implementare tale codice di esempio nella pagina http://127.0.0.1:49479/.

Inoltre, questo richiede essenzialmente di memorizzare le credenziali di oauth da qualche parte. Nel mio esempio qui sotto, ho usato localStorage.

$(function() { 
    $('#twitter').click(function (e) { 
    e.preventDefault(); 
    var cb = new Codebird; 
    cb.setConsumerKey("CeDhZjVa0d8W02gWuflPWQmmo", "YO4RI2UoinJ95sonHGnxtYt4XFtlAhIEyt89oJ8ZajClOyZhka"); 

    var oauth_token = localStorage.getItem("oauth_token"); 
    var oauth_token_secret = localStorage.getItem("oauth_token_secret"); 
    if (oauth_token && oauth_token_secret) { 
     cb.setToken(oauth_token, oauth_token_secret); 
    } else { 
     cb.__call(
     "oauth_requestToken", { 
      oauth_callback: "http://127.0.0.1:49479/" 
     }, 
     function (reply, rate, err) { 
      if (err) { 
      console.log("error response or timeout exceeded" + err.error); 
      } 
      if (reply) { 
      console.log("reply", reply) 
       // stores it 
      cb.setToken(reply.oauth_token, reply.oauth_token_secret); 

      // save the token for the redirect (after user authorizes) 
      // we'll want to compare these values 
      localStorage.setItem("oauth_token", reply.oauth_token); 
      localStorage.setItem("oauth_token_secret", reply.oauth_token_secret); 

      // gets the authorize screen URL 
      cb.__call(
       "oauth_authorize", {}, 
       function (auth_url) { 
       console.log("auth_url", auth_url); 
       // JSFiddle doesn't open windows: 
       // window.open(auth_url); 
       $("#authorize").attr("href", auth_url); 

       // after user authorizes, user will be redirected to 
       // http://127.0.0.1:49479/?oauth_token=[some_token]&oauth_verifier=[some_verifier] 
       // then follow this section for coding that page: 
       // https://github.com/jublonet/codebird-js#authenticating-using-a-callback-url-without-pin 
       }); 
      } 
     }); 
    } 
    }) 
}); 

anche fatto un JSFiddle

+0

Ho sempre avuto il 401 –

Problemi correlati