2011-08-19 101 views
27

私はtwitterをこのguideを使ってdeviseに統合しようとしています。私は基本的にFacebookのすべての出現を取って、それをtwitterで置き換えます。私はTwitterでログインする場合しかし、私は次のエラーを取得しています。次のURLでTwitter、Cookie OverflowエラーのDevise?

ActionDispatch::Cookies::CookieOverflow (ActionDispatch::Cookies::CookieOverflow): 

http://localhost:3000/users/auth/twitter/callback?oauth_token=something&oauth_verifier=blah 

は、この問題を修正周りに取得する任意の良い方法はありますか?

ありがとうございます!

答えて

73

問題はsession["devise.facebook_data"] = env["omniauth.auth"]です。 Twitterの応答には、非常に大きく、セッションに収まらないextraセクションが含まれています。 1つのオプションは、代わりにenv["omniauth.auth"].except("extra")をセッションに格納することです。

+5

"余分な"セクションは必要ないとわかりました。私は 'raise request.env [" omniauth.auth "]を使いました。to_yaml' – dandrews

8

セッション用にActiveRecordストアを有効にすることができます。設定/初期化子/ session_store.rb

コメントアウトの使用方法についての行をで ルック:レールrails g session_migration前に、移行を作成して、移行

# Use the database for sessions instead of the cookie-based default, 
# which shouldn't be used to store highly confidential information 
# (create the session table with "rails generate session_migration") 
MyApp::Application.config.session_store :active_record_store 

active_record_store:使用についての下部に

のコメントを解除行をcookie_storeそれ。

+1

にはどのような不都合な副作用がありますか? – courtsimas

+0

セッションデータが4Kより大きい場合は、アクティブなレコードストアを使用してください。クッキーに保存するよりも少し遅いです。 –

+0

オープンソースのcmsが、この変更、btwで動作するために失敗したボックスレールのいくつかは... – courtsimas