Po wykonaniu:Rails 3.1 Devise OAuth dla Facebook splątanie routingu
https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
mogę zapisać się do użytkownika za pośrednictwem Facebook. Ale walczę o zdefiniowanie własnych przekierowań.
Oczywiście jest to doskonały, że istniejący użytkownik, który już facebook podpisana w górę/w przekierowuje do mojej aplikacji i trwa dalej, ale to w przypadku użytkowników, którzy są nowo utworzone poprzez facebook jestem zainteresowany.
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
# You need to implement the method below in your model
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
sign_in_and_redirect @user, :event => :authentication
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
Co oznacza user.persisted? find_for_facebook_oauth robi to samo, co strona devise wiki; tj. znajduje użytkownika pocztą elektroniczną i zwraca go, jeśli istnieje, lub tworzy nowego użytkownika z hasłem autogena, jeśli nie.
Ale potrzebuję go, aby przekierować nowo utworzonych użytkowników na stronę, na której ustawili swoje hasło. Nie chcę, aby hasło pośredniczące pozostało, chcę, aby użytkownicy natychmiast zostali wyświetleni z ekranem do a) potwierdzenia swojej nazwy i b) potwierdzenia swojego hasła.
Mam taki ekran zaimplementowany dla osób, które akceptują zaproszenia (przez https://github.com/scambra/devise_invitable/), które są w widokach/devise/invitations/edit - które byłyby idealnie do tego przystosowane, jeśli to zadziała.
Gdzie należy podać przekierowanie i jaki format powinien mieć tego rodzaju przekierowanie? Uważam, że metoda facebookowa jest dość myląca do interpretacji. Nie rozumiem, dlaczego kiedykolwiek przekieruje się do nowego adresu URL rejestracji użytkownika - użytkownik jest utworzony lub istnieje, więc do czego odnoszą się te, które działają?
Oczywiście mylić, więc doceniamy pomoc. :)
Dzięki
Dave
Jesteś poprawne . Użyłem sign_in_count (części programu) do ustalenia, czy to użytkownicy logowali się po raz pierwszy, czy nie. Dzięki za jasne wyjaśnienie. – Dave
nie ma problemu! zagłosuj jeśli jest pomocny :) –
@Dave: W jakim pliku widoku powinien być zapisany kod? – inquisitive