2011-08-19 32 views
27

Tôi đang cố gắng tích hợp twitter vào việc sử dụng số này guide. Tôi về cơ bản có tất cả sự xuất hiện của facebook và thay thế nó bằng twitter. Tuy nhiên, khi tôi đăng nhập bằng twitter, tôi nhận được lỗi sau:Phát sinh cho Twitter, Lỗi tràn cookie?

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

tại url sau:

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

Có cách nào tốt đẹp để có được xung quanh sửa chữa vấn đề này?

Cảm ơn!

Trả lời

73

Sự cố xảy ra với session["devise.facebook_data"] = env["omniauth.auth"]. Phản hồi của Twitter chứa phần extra rất lớn và không vừa trong phiên. Một tùy chọn là lưu trữ env["omniauth.auth"].except("extra") trong phiên thay thế.

+5

Để tìm ra tôi không cần phần "phụ", tôi đã sử dụng 'raise request.env [" omniauth.auth "]. To_yaml' – dandrews

8

Bạn có thể bật cửa hàng ActiveRecord cho phiên. Look trong config/initializers/session_store.rb

bình luận ra các dòng về việc sử dụng: cookie_store

bỏ ghi chú dòng ở phía dưới về việc sử dụng: active_record_store

# 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 

Tạo di cư trước đường ray rails g session_migration và di chuyển nó.

+1

có bao giờ có bất kỳ tác dụng phụ bất lợi nào không? – courtsimas

+0

Tôi tin rằng bạn chỉ nên sử dụng cửa hàng lưu trữ hoạt động nếu dữ liệu phiên của bạn lớn hơn 4K, chậm hơn một chút so với lưu trữ nó trong cookie. –

+0

Một số trong số các đường ray của mã nguồn mở cms không làm việc với sự thay đổi này, btw ... – courtsimas

Các vấn đề liên quan