Facebook'a kaydolup/oturum açarak kullanıcıların oturum açmasına/oturum açmasına izin vermek için omniauth kullanıyorum! Ama Twitter ile bağlantı kurmaları için omniauth-twitter gem'i eklemek istedim. Şu URL'denRaylar: omniauth twitter ile çerez taşması
ActionDispatch::Cookies::CookieOverflow in OmniauthCallbacksController#twitter
:
I/aşağıdaki hatayı alıyorum içinde kayıt olurken https://github.com/plataformatec/devise/wiki/OmniAuth:-OverviewAma:
ben bağlamak Facebook kurarken daha aynı adımları takiphttp://localhost:3000/users/auth/twitter/callback?oauth_token=HRjON8J4bj9EcbjiELHcpHmSXo0cPd0wCHyuWG8ATZU&oauth_verifier=ZiZb1FAKZmNML1gVu5RKBLEGzbeAPPzC80QCpPDGU
Ben farklı şeyler benzer yazılarda önerdi çalıştı ama bu çalıştı :(
hiçbiriomniauth_callbacks_controller.rb => app/kontrolörleri/omniauth_callbacks_controller.rb
def twitter
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.find_for_twitter_oauth(request.env["omniauth.auth"])
if @user.persisted?
sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
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
end
user.rb => app/modeller/user.rb
def self.find_for_twitter_oauth(auth)
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
user.name = auth.info.name # assuming the user model has a name
end
end
def self.new_with_session(params, session)
super.tap do |user|
if data = session["devise.twitter_data"] && session["devise.twitter_data"]["extra"]["raw_info"]
user.email = data["email"] if user.email.blank?
end
end
end
:İşte
benim yapılandırma
devise.rb => app/config/initializers/devise.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, "KEY, "KEYPASSWORD
end
Herhangi bir fikir yanlış mı?
'request.env ["omniauth.auth"] 'seçeneğini büyük bir karmaşaya koydunuz. Daha fazla cevaba ihtiyacınız var? –
Pro ipucu: İHTİYACINIZ parçaları kesin ve bunları oturuma yerleştirin. –
Kod bilgim çok sınırlıydı, çünkü kodu aydan bir süre önce öğrenmeye başladım, bu yüzden şimdi bu karma şeyin ne anlama geldiğini anlamıyorum. Ben sadece koymak o benim facebook kimlik doğrulaması için omniauth modelim vardı ve o çalıştı - Ne demek istiyorsun kocaman bir karma? gereksiz mi? – zacchj