2010-08-24 22 views
0

xJ'ai travaillé pendant des jours pour obtenir Twitter pour s'authentifier avec Ruby, mais je n'ai pas de chance.401 erreur avec Ruby OAuth pour Twitter

Ma première tentative a été quelque chose comme ceci:

class TwitterController < ApplicationController 

    def index 
    @callback_url = "http://dev.twipler.com:3000/twitter/auth" 
    @auth= TwitterOAuth::Client.new(:consumer_key => "xxx", :consumer_secret => "xxxxxxxxxxxxxxxxx") 
    @rtoken = @auth.request_token :oauth_callback => @callback_url 
    @token = @rtoken.token 
    @secret = @rtoken.secret 
    @link = @rtoken.authorize_url 
    session['token' ] = @token 
    session['secret'] = @secret 
    redirect_to @link 
    end 

    def auth 
    @auth.authorize_from_request(session[:rtoken], session[:rsecret], params[:oauth_verifier]) 
    end 
end 

Et d'une manière très similaire, mais avec la pierre précieuse Twitter, et même avec le petit bijou OAuth directement. Peu importe ce que OAuth :: Consumer :: token_request meurt avec une erreur 401.

Alors, en désespoir de cause, je tenté de git clone Snitter, ajouter mes creds Twitter, et l'essayer, mais il meurt aussi avec un 401.

J'ai essayé d'utiliser localhost: 300/twitter/auth, http://dev.twipler.com:3000/twitter/auth, et un peu.ly pour chacun des anciens 2. Rien ne fonctionne.

Une aide?

EDIT: Bien sûr, j'oublierais de faire la chose la plus logique à faire et supprimer mes secrets. (Ils ont été changés;)).

Répondre

2

Vous pouvez vouloir éditer votre secret de consommateur. Avec cela, n'importe qui peut faire des demandes au nom de votre application. Cela dit, assurez-vous que l'heure de votre système est synchronisée avec un serveur NTTP. Si votre temps système a dérivé rapidement ou lentement, les demandes OAuth échoueront car elles incluent un horodatage et une durée de vie relativement courte. J'ai eu ce exact problem un certain temps. A défaut, vous pouvez ouvrir la gemme oauth et activer le débogage HTTP, qui vous montrera la transaction HTTP complète, y compris tout message d'erreur renvoyé.

+0

J'ai vérifié mon temps quand j'ai découvert que cela pourrait être un problème, mais ça va. Mais je peux creuser à travers le débogage HTTP, merci! –

+0

Regardez Net :: HTTP # set_debug_output. Trouver où dans la gemme OAuth l'installation HTTP est faite, puis sur l'objet HTTP, set_debug_output ($ stderr). La transaction HTTP complète apparaîtra dans le journal des erreurs de votre serveur Web (dans mon cas,/var/log/http/error_log, pour Apache). –

+0

Génial, merci l'homme! –