ActionDispatch::Cookies::CookieOverflow エラー

スポンサーリンク

Rails4 の Devise + OmniAuth で表題のエラーが発生しましたので対処。Devise + OmniAuth で Twitter での OAuth 認証によるサインイン機能を作っていたところ、「ActionDispatch::Cookies::CookieOverflow」のエラーが発生しました。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

Twitter からのレスポンスデータが大きいのが原因

原因を調べたところ、OAuth 認証で、Twitter が返すレスポンスデータの extra section のデータが大きすぎるためであるらしい。

ruby on rails – Devise for Twitter, Cookie Overflow error? – Stack Overflow

解決策をググってみたのですけど、セッションの保存先を Cookie から ActiveRecord に変更する方法を解説しているページが多かった。

セッションにあまり大きなデータを格納するのも気持ち悪い気がしたので、この stackoverflow に書いてあった方法で extra はセッションに格納しないようにしました。

OAuth 認証用のコールバックメソッド

以下、Devise + OmniAuth を使った OAuth 認証用のコールバックメソッド。

コードは、https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview を参考。

session[“devise.twitter_data”] = request.env[“omniauth.auth”].except(“extra”) の行で、request.env[“omniauth.auth”].except(“extra”) としてセッションに格納する、Twitterからのレスポンスのうち extra の部分を除外しました。以上で、ActionDispatch::Cookies::CookieOverflow のエラーは解決。

またも stackoverflow に助けられました。英語学習のおかげで、英文をある程度すらすら読めるようになり、stackoverflow を楽に活用できるようになったのは何気に大きいです。

ActiveRecord を保存先に指定する方法などは以下を参照。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
 
スポンサーリンク

Leave Your Message!