Я использовал программу, чтобы пользователи могли зарегистрироваться и войти на сайт. Я также использовал omniauth-facebook, чтобы пользователи могли войти в систему со своими учетными записями в facebook. Тем не менее, люди, которые впервые зарегистрировались с тем же электронным письмом, что и их электронная почта, не могут войти в свою учетную запись на facebook. Я хочу использовать как регистрацию в facebook, так и регистрацию сайта.Как разрешить пользователям входить в систему как с учетной записью, так и с учетной записью facebook?
Это мой user.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
user = User.where(:provider => auth.provider, :uid => auth.uid).first
unless user
user = User.create(name:auth.extra.raw_info.name,
provider:auth.provider,
uid:auth.uid,
email:auth.info.email,
password:Devise.friendly_token[0,20]
)
end
user
end
end
И omniauth_callbacks_controller.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
Вы хотите использовать как логин facebook, так и придумать (email/pass) или только один из них ?. Я могу ответить на ваш вопрос, основываясь на этом - спасибо –
@matrixtheone Я хочу использовать как facebook login, так и разработать регистрацию. спасибо! – achilleo