5

gemが処理する「loginwithtwitter」リンクを提供して/auth/twitterいます。omniauth

私の開発マシンでは、これは正常に機能しているようで、Twitterログインページにリダイレクトされ、dev.twitter.com(http://127.0.0.1:3000/auth/twitter/callback)でアプリケーションに設定されたコールバックに戻ります。

テスト実稼働サーバーに別のアプリケーションを登録していますが、異なるのはアクセストークン、シークレット、コールバックだけです。/auth/twitter本番サーバーのパスにアクセスすると、次のようになります。

OAuth::Unauthorized (401 Unauthorized):
  oauth (0.4.6) lib/oauth/consumer.rb:216:in `token_request'
  oauth (0.4.6) lib/oauth/consumer.rb:136:in `get_request_token'
  ...

に設定されているログに使用されているものを印刷することにより、サーバーが実際に開発キー/シークレットを使用していることを確認しました/config/initializers/omniauth.rb。それらはTwitterページで指定されたものと一致し、登録されたコールバックは有効なアドレスであり、本番サーバーを指します。

ここで何が間違っている可能性がありますか?これはレート制限の結果でしょうか?

Gemfileは次のとおりです。

source 'https://rubygems.org'

gem 'rails', '3.2.3'

gem 'mysql2','0.3.11'

gem 'tweetstream'
gem 'koala'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'twitter-bootstrap-rails'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

gem 'twitter'
gem 'omniauth-twitter'
gem 'omniauth-facebook'
gem 'thin'

/config/initializers/omniauth.rb:

puts "initializing twitter with #{TWITTER_KEY}, #{TWITTER_SECRET}"
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, TWITTER_KEY, TWITTER_SECRET
  provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET,
        :scope => 'read_stream,publish_stream'
end

サーバーは、ここの最初の行に正しいキーとシークレットを記録します。

4

4 に答える 4

2

私の場合、問題はサーバー時刻が約 50 分遅れており、タイムスタンプが古すぎるためにリクエストが拒否されていたことです。

システム時刻を更新すると修正されました。

于 2012-07-16T05:07:48.220 に答える
1

Twitter 設定のチェックボックスをオンにすることを忘れないでください。

「このアプリケーションを使用して Twitter でサインインすることを許可します」

これが誰かを助けることを願っています

于 2013-07-02T09:11:13.867 に答える
0

私の問題は、「コールバック URL のロック」をチェックしたことでした。それが機能したときにチェックを外しただけです。

于 2015-12-24T12:16:52.747 に答える