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

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

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

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

Twitter

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

Q&A

0回答

396閲覧

Herokuでは問題ないのに、ローカルサーバー(Docker)でTwitter APIへのリクエストが401エラー

segawan

総合スコア14

Ruby on Rails 5

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

Twitter

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

0グッド

0クリップ

投稿2019/01/14 17:25

Rails5.2においてTwitterアカウントで会員登録できる機能を作成しようとしています。

Dockerの開発環境ではTwitterの連携承認ページ(アクセストークンの発行直前ページ)へ遷移すると401エラーが発生してTwitter APIへの認証が上手くいきませんでした。

しかし、同アプリをHeorkuにアップロードして試してみたところ、Heroku上では問題なく認証が通りました。
HerokuへはDocker imageではなく、Docker環境で作成したファイルをPushしています。

ひとまず、私が既に確認して(もしくは確試して)みたことは

  • Twitter APIを利用するためのAPI KEYとAPI SECRET KEYの正誤確認(DockerのRails上で該当の環境変数を出力して確認しました)
  • コールバックURLの正誤確認(http://localhost:ポート番号/auth/twitter/callbackだけでなく、http://127.0.0.1:ポート番号/auth/twitter/callbackもCallback URLとして追加しました)
  • Docker上のローカルサーバーをProductionで起動して確認(RAILS_ENVをDockerのRails上で出力してHerokuでの値と同じになっていることを確認しました)
  • Dockerコンテナ(Web)上での時刻がホスト端末とほぼ同じ時刻(JST)になっていることを確認(全く同じ時刻になっているかどうかを確認する方法が分かりませんでした)

といった内容になります。

Docker関連のファイルは以下の通りです。(ローカルサーバーはdevelopmentの状態で起動しています)

Dockerfile

FROM ruby:2.5.3 RUN apt-get update -qq && apt-get install -y build-essential nodejs RUN mkdir /app WORKDIR /app COPY Gemfile /app/Gemfile COPY Gemfile.lock /app/Gemfile.lock RUN bundle install COPY . /app

docker-compose.yml

version: '3' services: web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/app ports: - 3000:3000 depends_on: - db tty: true stdin_open: true environment: - "TZ=Asia/Tokyo" - TWITTER_KEY='〜〜〜' - TWITTER_SECRET='〜〜〜' db: image: postgres:10.6 volumes: - db-volume:/var/lib/postgres volumes: db-volume:

認証にはomniauthとomniauth-twitterを利用しています。
deviseは利用していません。

Railsファイルの作成は下記記事に準拠しています。
Railsでomniauth-twitterを使ってTwitter認証をする(2018/10)

Dockerだと上手くいかない理由を探りたいのですが、何が原因か、もしくは何を調べるべきかお分かりになればお教え頂けると幸いです。

よろしくお願いします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問