Ошибка 401 с Ruby OAuth для Twitter - PullRequest
0 голосов
/ 24 августа 2010

x Я работал в течение нескольких дней, чтобы Twitter аутентифицировался с Ruby, но мне не повезло.

Моя первая попытка была примерно такой:

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

И очень похожим образом, но с самоцветом Twitter, и то же самое с самоцветом OAuth. Независимо от того, что OAuth :: Consumer :: token_request умирает с ошибкой 401.

Итак, в отчаянии я попытался наброситься на клона Snitter , добавить кредиты в Твиттере и попробовать его, но он тоже умирает с 401.

Я пытался использовать localhost: 300 / twitter / auth, http://dev.twipler.com:3000/twitter/auth, и bit.ly для каждого из первых 2. Ничего не работает.

Любая помощь?

РЕДАКТИРОВАТЬ: Конечно, я бы забыл сделать самую логичную вещь и удалить мои секреты. (Они были изменены;)).

1 Ответ

2 голосов
/ 24 августа 2010

Вы можете отредактировать свой потребительский секрет. При этом любой может отправлять запросы от имени вашего приложения.

Тем не менее, убедитесь, что ваше системное время синхронизировано с NTP-сервером. Если системное время смещается быстро или медленно, запросы OAuth не будут выполняться, поскольку они включают временную метку и относительно короткий TTL. У меня была эта точная проблема некоторое время назад.

В противном случае вы можете открыть гем oauth и включить отладку HTTP, которая покажет вам полную транзакцию HTTP, включая любое возвращенное сообщение об ошибке.

...