Sau khi làm theo:Rails 3.1 lập mưu Oauth cho Facebook tuyến nhầm lẫn
https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
Tôi có thể đăng ký một người dùng thông qua Facebook. Nhưng tôi đang đấu tranh để xác định chuyển hướng của riêng tôi.
Rõ ràng nó hoàn hảo mà một người dùng hiện rằng đã facebook đăng ký/trong chuyển hướng đến ứng dụng của tôi và tiếp tục trên, nhưng đó là trường hợp của những người dùng mới được tạo ra thông qua facebook tôi quan tâm.
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
User.persisted có nghĩa là gì? find_for_facebook_oauth cũng giống như trang wiki phát sinh quy định; tức là tìm người dùng bằng email và trả lại email nếu họ tồn tại hoặc tạo người dùng mới có mật khẩu autogen nếu không.
Nhưng tôi cần nó để chuyển hướng người dùng mới được tạo đến trang nơi họ đặt mật khẩu của họ. Tôi không muốn các mật khẩu còn tồn tại, tôi muốn người dùng ngay lập tức được trình bày với một màn hình để a) xác nhận tên của họ và b) xác nhận mật khẩu của họ.
Tôi có màn hình như vậy được triển khai cho những người chấp nhận lời mời (qua số https://github.com/scambra/devise_invitable/) trong chế độ xem/đưa ra/lời mời/chỉnh sửa - điều này hoàn toàn phù hợp với điều này nếu nó hoạt động.
Tôi nên thêm chuyển hướng vào đâu và định dạng chuyển hướng này sẽ đi theo định dạng nào? Tôi thấy phương pháp facebook ở trên khá khó hiểu để giải thích. Tôi không thể hiểu tại sao nó sẽ chuyển hướng đến một url đăng ký người dùng mới - người dùng được tạo ra hoặc tồn tại, do đó, những gì hiện vẫn còn liên quan đến?
Rõ ràng là nhầm lẫn, vì vậy hãy giúp đánh giá cao. :)
Cảm ơn,
Dave
bạn là chính xác . Tôi đã sử dụng sign_in_count (một phần của sự phát minh) để xác định xem đó có phải là lần đầu tiên người dùng đăng nhập hay không. Cảm ơn lời giải thích rõ ràng. – Dave
không sao cả! bỏ phiếu nếu nó hữu ích :) –
@Dave: Trong đó tập tin xem nên được viết bằng mã nào? – inquisitive