Durante il test dell'API di LinkedIn e il tentativo di creare un pacchetto smart Meteor JS per l'autenticazione con il provider OAuth di LinkedIn, ho eseguito un roadblock totale.Perché non posso generare un token oauth valido utilizzando l'arricciatura da riga di comando per l'API di LinkedIn?
In seguito these directions, sono stato in grado di generare con successo un oauth_token
per l'uso in una richiesta di autorizzazione, sotto forma di:
https://www.linkedin.com/uas/oauth/authorize?oauth_token={oauth_token}
Quando mettere che nel browser con il token generato da uno script Ruby che si presenta così:
require 'oauth'
api_key = '{linkedin api key}'
api_secret = '{linkedin api secret}'
configuration = { :site => 'https://api.linkedin.com',
:authorize_path => '/uas/oauth/authenticate',
:request_token_path => '/uas/oauth/requestToken',
:access_token_path => '/uas/oauth/accessToken' }
consumer = OAuth::Consumer.new(api_key, api_secret, configuration)
request_token = consumer.get_request_token
puts request_token.params[:oauth_token]
posso quindi facilmente scaricare il token come parametro querystring nel browser, utilizzando il sopra URI, e vedere la finestra di dialogo autorizzazioni LinkedIn.
La finestra di autenticazione LinkedIn che viene visualizzata con un token valida:
Purtroppo, quando si tenta di scrivere una richiesta ricciolo nella riga di comando, il oauth_token
che viene generato non riesce quando viene utilizzato in quello stesso URL. In effetti, risulta che linkedin risponde con un errore 500 e il browser mostra una finestra di errore standard di 500. La risposta arriva senza ulteriori dettagli:
Ecco il codice che è simile a quello che avevo realizzato nel mio ricciolo richiesta di linkedin per una nuova oauth_token
:
[email protected] accounts-linkedin (fixes_for_meteor_0_5_4)* $ cat linkedin_oauth_gen.sh
curl -X POST https://api.linkedin.com/uas/oauth/requestToken --verbose --header 'Authorization: OAuth oauth_nonce="0d9a3e40660811e2bcfd0800200c9a66",oauth_timestamp="1359019570",oauth_version="1.0",oauth_signature_method="HMAC-SHA1",oauth_consumer_key="{oauth_consumer_key}",oauth_signature="{oauth_signature}"'
Vale la pena notare che che avevo usato LinkedIn's OAuth test console per generare l'intestazione Autorizzazione.
Questo è importante, perché ho lo stesso problema quando si tenta di implementare funzionalità simili nel mio pacchetto smart Meteor JS.
La mia domanda principale, tuttavia, è il motivo per cui nel mondo posso farlo con il codice ruby sopra, ma quando si usa un semplice comando di ricciolo, il token non sembra essere generato validamente (o semplicemente LinkedIn non vuole per onorarlo) ...
FWIW, ho letto attraverso questo in dettaglio: http://developer.linkedin.com/documents/common-issues-oauth-authentication – zealoushacker
ho trovato anche questo thread nel forum sviluppatori LinkedIn: http://developer.linkedin.com/forum/500-internal-server-error-when-authorizing-user#comment-21135 – zealoushacker