小编Gau*_*ier的帖子

Cookie溢出与Twitter登录

当我尝试在我的网站上使用twitter登录时,我发现了一些错误.

ActionDispatch::Cookies::CookieOverflow in Users::OmniauthCallbacksController#twitter 

ActionDispatch::Cookies::CookieOverflow
Run Code Online (Sandbox Code Playgroud)

我找不到解决方案,这是我使用的代码.

omn​​iauth_callbacks_controller.rb

def twitter
@user = User.find_for_provider_oauth(request.env["omniauth.auth"], current_user)

if @user.persisted?
  sign_in_and_redirect @user, :event => :authentication
  set_flash_message(:notice, :success, :kind => "twitter") if is_navigational_format?
else
  session["devise.twitter_data"] = request.env["omniauth.auth"]
  redirect_to new_user_registration_url
end
Run Code Online (Sandbox Code Playgroud)

devise.rb

require "omniauth-twitter"


config.omniauth :twitter, 'xxxxxxx', 'xxxxxxxxxxxk', :strategy_class => OmniAuth::Strategies::Twitter
Run Code Online (Sandbox Code Playgroud)

user.rb

def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
  user.provider = auth.provider
  user.uid = auth.uid
  user.name = auth.info.name
  user.oauth_token = auth.credentials.token
  user.oauth_expires_at = Time.at(auth.credentials.expires_at)
  user.save!
end

def self.find_for_provider_oauth(auth, signed_in_resource=nil)
user = User.where(:provider => auth.provider, :uid => auth.uid).first
unless …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails omniauth ruby-on-rails-3

4
推荐指数
2
解决办法
3266
查看次数

标签 统计

omniauth ×1

ruby-on-rails ×1

ruby-on-rails-3 ×1