[Rails] HerokuにデプロイしたらGoogleログイン機能が機能しなくなった
Googleアカウントのログイン機能が動かない
-
RubyとRailsのバージョン
- Ruby: 2.6.5
- Rails: 6.0.2
-
行なったこと
- Omniauthを導入し、Googleアカウントでログインする機能を実装
- .envファイルを作成し、クライアントIDとシークレットIDをこちらに記載
- .envファイルを.gitignore内に記載し、GitHubから見えないように設定
- Herokuにデプロイ
DeviseやOmniauthが原因でHerokuにデプロイできない方はこちらの記事をご覧ください
https://qiita.com/TAKO-zhangyu/items/153321ab6b333b614e12
- 行いたいこと
- デプロイした先の環境で、Googleアカウントを使ってログインできるようにする
状況
ローカル環境(localhost:3000)では機能していたGoogleアカウントでのログイン機能ですが、Herokuにデプロイしたサイトで見ると機能しなくなりました。
client_idが取得できないと表示されています。
Authorization Error
Error 400: invalid_request
Missing required parameter: client_id
Learn more
原因
Google oauthを使ったログイン機能の実装には、Google側から発行されたクライアントID (GOOGLE_CLIENT_ID)と、シークレットID (GOOGLE_CLIENT_SECRET)が必要です。
このコードはあまり見えるところに置くべきではないため、私は.envファイルを作成し、その中に書き込みました。
そして、この.envファイルは.gitignoreのなかに記載しているので、GitHubから見えない状態になっています。
しかし、同時にHerokuにも見えない状態になってしまっています。
なので、client_idが取得できないと表示されてしまいました。
Herokuにclient_idを知ってもらおう
1. https://dashboard.heroku.com/apps に移動します。
2. ログインします。
一度デプロイできている場合、そこに自分のアプリの名前が載っていると思います。
3. 自分のアプリの名前をクリックしてください。
すると、ページの上あたりにあるナビバーで確認すると、現在 Overview にいると思います。
4. そのナビバーの最も右にある Setting をクリックしてください。
5. 上から2段目にある Reveal Config Vars というボタンをクリックしてください。
Config Varsがたくさん並んでいると思います。DATABASE_URLとか、LANGとかが並んでいるところです。
6. その中に、Google側から発行されたIDを追加しましょう。
左側のKEY欄にGOOGLE_CLIENT_ID、右側のVALUE欄に発行されたIDを入力し、Addをクリックしてください。
シークレットIDも同じ要領で入力しましょう。
そうすると、治りました。
GitHubに見えないようにしているからHerokuからも見えないのは当たり前か、と腹落ちしました。参考になると嬉しいです。
プログラマーとしての就職活動中です。もしよければTwitterのフォローお願いいたします!
Twitter : https://twitter.com/tako_guangzhou
Author And Source
この問題について([Rails] HerokuにデプロイしたらGoogleログイン機能が機能しなくなった), 我々は、より多くの情報をここで見つけました https://qiita.com/TAKO-zhangyu/items/c5c49a52ca037cf8ffa7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .