This page looks best with JavaScript enabled

【Rails】Sorceryでfacebook認証 エラーと解決法

 ·   ·  ☕ 3 分で読めます

はじめに

Sorceryによるfacebookログイン認証をしようとして、盛大なエラー祭りになりました。
誰かのための逆引き辞典になればいいなと思い、記録します。
ざっくりとした流れについてはこちらで書いています。

動作環境

ruby 2.6.5
Rails 5.2.3
sorcery 0.14.0
mkcert 1.4.1

エラーとその解決法

ArgumentError in Hogehoge

スクリーンショット 2020-02-06 23.13.20.png

ArgumentError in BoardsController#index
No association found for name `authentications’. Has it been defined yet?

原因と解決法

Userモデルにおけるaccepts_nested_attributes_for :authentications
:authenticationsとのアソシエーションが存在することが前提となっている。
そのため、has_many :authentications, dependent: :destroyより下に書く必要がある。

Sorry, something went wrong.

スクリーンショット 2020-02-04 16.11.49.png

Sorry, something went wrong.
we’re working on getting this fixed as soon as we can.

解決法

1
2
  config.facebook.user_info_path = 'me?fields=email'
  config.facebook.access_permissions = %w[email]

ここに不適な値を入れていた場合に起こるので、一旦デフォルトに戻してみる。

URLはブロックされています

スクリーンショット 2020-02-04 20.28.31.png

URLはブロックされています: リダイレクトURIがアプリのクライアントOAuth設定でホワイトリストに追加されていないため、リダイレクトできませんでした。クライアントとウェブOAuthログインをオンにして、すべてのアプリドメインを有効なOAuthリダイレクトURIとして追加してください。

解決法

https://localhost:3000https://localhost:3000/oauth/callback?provider=facebookを有効なOAuthリダイレクトURIに登録する。
リダイレクトURIはSorceryのcallback_urlのことです。

接続はプライベートではありません

スクリーンショット 2020-02-04 20.26.10.png

「OK」をクリックすると

スクリーンショット 2020-02-04 20.19.42.png スクリーンショット 2020-02-04 20.31.19.png

原因と解決法

リダイレクトURIをhttps://0.0.0.0:3000/oauth/callback?provider=facebookのままにしているとこのような警告が出る。
mkcertの設定ではhttps://0.0.0.0は証明書の対象ではないので、HTTPS化していない。
https://localhost:3000/oauth/callback?provider=facebookに書き換える。

おわりに

と言う名の反省。

最初にいろんな作業を中途半端に進めた結果、エラーが出たときにどこが原因なのかわからなくなってしまいました。
みなさんは、まずはwikiに従って、その後自分で設定を追加していくようにしてください。
くれぐれも、よくわかってもいないのにリファクタリングとか設定の追加をしながら書き進めていかないように。

Share on

aiandrox
Written by
aiandrox
今日も楽しく明日も楽しく

目次