2011-05-28 24 views
4

OmniAuth、Rails 3.1.0.rc2、mysql2、ruby 1.9.2.p0を使用しています。OmniAuth invalid_response with Twitter

私のサイトにリダイレクトしても、これが表示されます。

/auth/failure?message=invalid_response 

Omniauth.rb

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

私はキー100Xをチェックしましたし、彼らは正しいです。まだ無効な応答を取得しています。私が見ている質問のどれもうまくいかないようです。

ご協力いただければ幸いです!

ありがとうございました。 [:

新しい情報が必要な場合は、尋ねてください。

答えて

3

あなたは間違った順序でキーを入れていませんか?

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のに探しておく必要があります...

+1

「Twitter :: Unauthorized:POST」https://api.twitter.com/1/statuses/update.json:401:あなたを認証できませんでした。 ただし、consumer_keyとconsumer_secretは100%正確です。それは少し悪化しています。 – nbucciarelli

+1

さて、問題は認証の問題だと思われます。たぶんあなたは別のアプリケーションを登録しようとすることができますし、別のキーのペアを取得します。 – Christian

+0

Twitter OAuthの資格情報をテストするこの簡単な方法は、私が書いた小さなアプリで動作する既知の良い資格情報ではうまくいかないようです。これはまだここで使用されている最新の宝石を使ってテストする正確な方法ですか?以前のアプリでうまく動作していたときにOmniAuthの問題に遭遇してしまったため、資格情報の再設定を繰り返しても役立たない。 –

4

あなたのコントローラでこのrequest.env['rack.auth']を使用する場合は、request.env['omniauth.auth']にこれを変更する - これは、ここで説明したOmniAuth

このsoluti私のために働いています。

4

私にも同様の問題がありました。私は実際に私のUsers :: OmniauthCallbacksController#twitterメソッドでいくつかのランタイムエラーがあったことがわかります:

nilオブジェクト上に存在しないメソッドのメソッドを呼び出していましたが、例外が発生しましたが、オムニウスは例外を飲み込んでいた。

私はメソッドの本文全体をbegin/rescue節にラップして例外を出力しました。

無効な資格情報を取得している場合は、twitter発行のoauthキーの有効期限が切れているため、ユーザーは実際に/ users/auth/twitterを再度呼び出す必要があります。

+1

oauthが例外を食べることを確認できます。 :-(あなたはほとんどのタイプを通過させる方法があると思いますが、わかりません。 –

0

あなたの答えはクリスチャンありがとうございます。それは私のために非常に役立った。しかし、401エラーが発生して更新やリツイートなどをしようとすると、

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

とTwitterクライアントの設定を含める必要があります。だから、最終的にはあなたはそれが私のために

を働いていたし、もちろん、あなたのTwitterアプリがアクセスレベル=リードを持っていると記述する必要があり

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 

を持つことになりますhttps://dev.twitter.com/discussions/1522

を見てください。 dev.twitterでこれを変更する必要があります。あなたがステータス、リツイートなどを更新したい場合はcom