Не могу получить свой access_token с помощью Rails и гема OAuth - PullRequest
1 голос
/ 07 августа 2010

Я занимаюсь разработкой приложения на Rails 3, которое использует Twitter OAuth, и у меня возникают проблемы, потому что, очевидно, я не могу получить access_token после нажатия кнопки «Разрешить» и Twitter перенаправляет меня обратно на URL моего приложения, когда я захожу в Twitter.com / settings / connections Я не вижу свое приложение там как авторизованное.Я думаю, что-то не так в моем контроллере, надеюсь, вы можете указать их:

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

Пожалуйста, помогите, скажите мне, где моя ошибка, спасибо за внимание!

Родриго Алвес Виейра.

1 Ответ

0 голосов
/ 08 августа 2010

Я не совсем уверен, какая часть вашего кода не работает, возможно, что-то делать с методом access_token_get, но я покажу вам, как я это сделал - возможно, это поможет ..

после строки, где вы инициализируете @access_token, я делаю что-то вроде этого:

@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

(о, я использовал камень json, поэтому убедитесь, что в gem install json и require 'json'верх)

Надеюсь, что поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...