StackOverFlowにあるいくつかの異なる戦略を実装しましたが、これまでのところ、スローされるエラーに影響を与えるものはないようです。
OAuth::Unauthorized
401 Authorization Required
フォローしています Ryan BatesのRC#241 「Twitterでサインイン」をクリックするとエラーが発生します。先に進み、ここにリストされているようにroutes.rb
ファイルに応答ルートを追加しました。
routes.rb
:
match 'auth/Twitter/callback', to: 'user#update'
エラーはコールバック関数が原因である可能性があると考えています。同じエラー。私のdev.log
を見ると、次のことがわかります。
Started GET "/auth/Twitter" for 127.0.0.1 at 2014-09-16 18:52:08 -0600
(Twitter) Request phase initiated.
OAuth::Unauthorized (401 Authorization Required):
oauth (0.4.7) lib/oauth/consumer.rb:216:in `token_request'
oauth (0.4.7) lib/oauth/consumer.rb:136:in `get_request_token'
omniauth-oauth (1.0.1) lib/omniauth/strategies/oauth.rb:29:in `request_phase'
omniauth-Twitter (1.0.1) lib/omniauth/strategies/Twitter.rb:60:in `request_phase'
omniauth (1.2.2) lib/omniauth/strategy.rb:215:in `request_call'
omniauth (1.2.2) lib/omniauth/strategy.rb:183:in `call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
...
script/Rails:6:in `require'
script/Rails:6:in `<top (required)>'
-e:1:in `load'
-e:1:in `<main>'
だから私は問題がTwitterでの認証にあることを知っています。鍵と秘密でなければなりませんよね?
これで、スタック全体で見つかった提案に従って、KEYとSECRETをENV []変数として、environment/development.rb
ファイルへの直接文字列として、「ENV []」変数などを取り出しました。
私のKEYとSECRETは、説明したようにカスタム構成になりました ここ...
config/initializers/social_media.rb:
Twitter_CONFIG = YAML.load_file("#{::Rails.root}/config/Twitter.yml")[::Rails.env]
config/initializers/omniauth.rb
ファイル:
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :Twitter, Twitter_CONFIG['app_id'], Twitter_CONFIG['secret']
end
ActionController: Exception caught OAuth::Unauthorized - 401 Authorization Required
に関するアイデアはありますか?これはおそらくNoobエラーですが、私のGoogle-Fuは現在Google-Fされています...
髪を引き裂いた夜の後、 Twitter開発者コンソール のコールバックURLを調べました。
手間を省き、これを設定することを忘れないでください。 RailsCastには直接記載されていませんが、Ryanは簡単に説明します。
コールバックURLを設定するときは、//localhost:3000
を入力しないでください。機能しません。代わりに以下を使用してください:
http://127.0.0.1:3000/