質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

解決済

1回答

738閲覧

Omniauth+Omniauth-twitterで認証したいが400 Bad Requestとなります

lilywhite

総合スコア42

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

1クリップ

投稿2019/01/18 08:19

編集2019/01/18 14:40

Omniauth+Omniauth-twitterでTwitter認証をしたいのですが、「400 Bad Request」となりできません。

OAuth::Unauthorized

400 Bad Request

Ruby

1Extracted source (around line #236): 2 3 self.token_request(http_method, uri.path, token, request_options, arguments) 4 when (400..499) 5 raise OAuth::Unauthorized, response 6 else 7 response.error! 8 end 9

このページを参考に勧めたのですが、うまくいきませんでした。ほかの記事の多くは設定ファイルにconfig/secrets.ymlというファイルを使っているものが多かったのですが現時点のRailsのバージョンでは廃止されているようでわかりませんでした。


omniauth.rbの記述を変更したら401 Authorization Requiredに変わった

OAuth::Unauthorized

401 Authorization Required

最初の記述

Ruby

1Rails.application.config.middleware.use OmniAuth::Builder do 2 provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'], 3end

変更後の記述

Ruby

1Rails.application.config.middleware.use OmniAuth::Builder do 2 provider :twitter, 'TWITTER_KEY', 'TWITTER_SECRET' 3end

下記が**.envrc**ファイルです

export TWITTER_KEY="my twitter key" export TWITTER_SECRET="my twitter secret key"

下記が.bashrcファイルです

# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions export EDITOR=vim eval "$(direnv hook bash)"

エラーは解消されていないのでどなたかわかる方いらしましたら是非教えてください

解決策心当たりある方がいらしましたら、ぜひ教えてください
エラーは解消されていないのでどなたかわかる方いらしましたら是非教えてください

解決策心当たりある方がいらしましたら、ぜひ教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

いろいろ調べた結果このサイトを参考にもう一度イチからやってみたところ、Unauthorized 403 Forbiddenというエラーが発生しました。

403エラーの原因の多くはTwitterAppのCallBackURLにあるそうで、もう一度よく念入りに調べてみると、

http://192.168.33.15:3000/auth/twitter

のはずが

http://192.168.33.15/auth/twitter

となっていました。
やり直しという雑な方法になってしましましたが一応解決したので終わらせていただきます。
ありがとうございました


追記
最初の質問でのエラーの原因もわかり、やり直しせずにエラーの解消もできたので追記しておきます。

401 Authorization Requiredの原因は、CallBackURLのミスでした。上での説明のように

:3000 

の部分が抜けていたことです。

400 Bad Requestの原因は、direnvの記述のミスでした。つまり、環境変数を正しく設定できていないことにありました(ご指摘ありがとうございました。指摘通りのミスでした。)気が付けなかったのは単純に理解の浅さでした。

direnvの.envrcの記述は正しかったのですがその後のomniauth.rbファイルの記述を改悪してしまったことに原因があったようです。こちらが正しいファイルです。**ENV[]**の中に変数を入れなければ、取り出せないようです。

Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'], end

いろいろなエラーの原因が前後してしまい分かりにくくなってしまいすいません。
direnvに関して参考にした記事はコチラ
エラーに関して簡潔にまとめられている記事はコチラ

また、たくさんのマナー違反をしてしまったようですいませんでした。今後は気を付けます

投稿2019/01/18 16:02

編集2019/01/19 01:40
lilywhite

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問