2010-08-07 2 views
1

Je développe mon application Rails 3 qui utilise Twitter OAuth et je reçois des problèmes car apparemment je ne peux pas obtenir l'access_token, après avoir cliqué sur 'Autoriser' et Twitter me rediriger Retour à l'URL de mon application, quand je vais sur twitter.com/settings/connections Je ne peux pas voir mon application comme autorisée. Je crois qu'il ya quelque chose de mal dans mon contrôleur, je l'espère, vous pouvez les signaler:Impossible d'obtenir mon access_token en utilisant Rails et la gemme OAuth

class OauthController < ApplicationController 
    def start 
    request_token = client.get_request_token(:oauth_callback => 'http://localhost:3000') 
    session[:request_token] = request_token.token 
    session[:request_token_secret] = request_token.secret 
    redirect_to request_token.authorize_url 
    end 

    def callback 
    @access_token = client.get_access_token(:oauth_verifier => params[:oauth_verifier]) 
    render :json => access_token_get('https://api.twitter.com/account/verify_credentials.json') 
    end 

    protected 

    def client 
    @consumer = OAuth::Consumer.new(
     'key','secret', 
     :site => 'https://api.twitter.com', 
     :authorize_url => 'https://api.twitter.com/oauth/authorize', 
     :access_token_url => 'https://api.twitter.com/oauth/access_token' 
    ) 
    end 
end 

S'il vous plaît aider, dites-moi où est mon erreur, merci pour l'attention!

Rodrigo Alves Vieira.

+0

en fait, theres est un 'def start; request_token = client.get_request_token (: oauth_callback => 'http: // localhost: 3000') ' le balisage a caché le code et je ne pouvais pas résoudre :-p – rodrigoalves

+0

cela pourrait être une question stupide, mais avez-vous enregistré l'application sur Twitter? – mportiz08

+0

Oui, je l'ai fait. C'est ce qui rend le problème plus étrange:/ – rodrigoalves

Répondre

0

Je ne sais pas exactement quelle partie de votre code ne fonctionne pas, probablement quelque chose à voir avec la méthode access_token_get, mais je vais vous montrer comment je l'ai fait - peut-être que cela aidera ..

après la ligne où vous initialisez @access_token, je fais quelque chose comme ceci:

@response = client.request(:get, "/account/verify_credentials.json", @access_token, { :scheme => :query_string }) 
case @response 
when Net::HTTPSuccess 
    user_info = JSON.parse(@response.body) 
    unless user_info['screen_name'] 
    # authentication failed, error handling 
    end 
    # We have an authorized user, save the information to the database using @access_token.token and @acess_token.secret 
else 
    # error handling 
end 

(oh, et j'utilisais la pierre précieuse JSON, alors assurez-vous gem install json et require 'json' en haut)

J'espère que cela pourra aider!

+0

Cela n'a pas fonctionné, mais merci beaucoup quand même! – rodrigoalves

Questions connexes