OmniAuth invalid_response с Twitter - PullRequest
4 голосов
/ 28 мая 2011

Использование OmniAuth, Rails 3.1.0.rc2, mysql2, ruby ​​1.9.2.p0.

Я все еще получаю это при перенаправлении обратно на мой сайт.

/auth/failure?message=invalid_response

Omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, 'XXXXX', 'XXXXXXXXXXXXX'

Я проверил ключи 100x, и они верны.Все еще получаю неправильный ответ.Любой из вопросов, которые я вижу, кажется, не работает.

Любая помощь будет принята с благодарностью!

Спасибо.[:

Если нужна какая-либо новая информация, просто спросите.

Ответы [ 5 ]

4 голосов
/ 29 мая 2011

Если вы используете это request.env['rack.auth'] в вашем контроллере, измените его на request.env['omniauth.auth'] - это было объяснено здесь OmniAuth

это решение работает для меня.

4 голосов
/ 05 августа 2011

У меня была похожая проблема.Оказывается, у меня действительно были некоторые ошибки времени выполнения в моем методе Users :: OmniauthCallbacksController # twitter:

Я вызывал метод несуществующего метода для объекта nil, и это вызывало исключение, но либоdevise или omniauth глотали исключение.

В итоге я завернул все тело метода в предложение begin / rescue и распечатал исключение.

Однако, если вы получаете неверные учетные данные, тогда этовероятно, истек срок действия ключа oauth, выданного твиттером, и поэтому ваш пользователь действительно должен снова звонить / users / auth / twitter.

3 голосов
/ 28 мая 2011

Вы уверены, что не ставите ключи в неправильном порядке?

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, TW_CONSUMER_KEY, TW_CONSUMER_SECRET
end

Если нет, давайте быстро проверим ваши учетные данные с помощью самоцвета Twitter:

# twitter.rb -- Test credentials

require "rubygems"
require "twitter"

# Get a user's most recent status update
puts Twitter.user_timeline("YOUR_USER").first.text

Twitter.configure do |config|
  config.consumer_key = TW_CONSUMER_KEY
  config.consumer_secret = TW_CONSUMER_SECRET
end

# Update your status
Twitter.update("I Love ruby!")

Если это работает, то ваши учетные данные в порядке ... вы должны продолжать изучать Rails ...

0 голосов
/ 19 декабря 2011

Вы пробовали omniauth-twitter gem ??https://github.com/arunagw/omniauth-twitter

0 голосов
/ 07 октября 2011

Спасибо, Кристиан, за ваш ответ. Это было очень полезно для меня. Но если он выдает ошибку 401 при попытке обновления, ретвита и т. Д., Вам придется включить

  config.oauth_token = 'MY_OAUTH_TOKEN'
  config.oauth_token_secret = 'MY_OAUTH_TOKEN_SECRET'

для настройки клиента Twitter. Посмотрите на https://dev.twitter.com/discussions/1522

Итак, наконец, у вас будет

Twitter.configure do |config|
  config.consumer_key = 'TW_CONSUMER_KEY'
  config.consumer_secret = 'TW_CONSUMER_SECRET'
  config.oauth_token = 'MY_OAUTH_TOKEN'
  config.oauth_token_secret = 'MY_OAUTH_TOKEN_SECRET'   
end

у меня сработало

и, конечно, ваше приложение Twitter должно иметь уровень доступа = чтение и запись. Вы должны изменить это на dev.twitter.com, если хотите обновить статус, сделать ретвит и т. Д.

...