Emi*_*äck 12 facebook ruby-on-rails devise omniauth
我希望其他人有一个很好的解决方案来解决这个问题.我们让用户使用Facebook注册(通过喜欢应用程序),同时他们以我们网站上的用户身份进入我们的数据库.
注册成功后,似乎Devise/OmniAuth正在创建一个随机密码(?).如何让用户编辑他们的个人资料,默认情况下(和应该)在Devise中要求他们输入他们当前的密码?
小智 9
我有完全相同的问题所以我希望我的解决方案会有所帮助.
基于您问题中的详细信息,我假设您遵循设计维基中的OmniAuth指南:https://github.com/plataformatec/devise/wiki/OmniAuth :-Overview
在以下方法中:
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = User.where(:email => data.email).first
user
else # Create a user with a stub password.
User.create!(:email => data.email, :password => Devise.friendly_token[0,20])
end
end
Run Code Online (Sandbox Code Playgroud)
我更改了else块中的逻辑,因为它正在数据库中立即创建一个新用户并为它们散列密码:
else # Create new user
user =User.new
user
end
Run Code Online (Sandbox Code Playgroud)
相反,我只是创建了一个新用户,以便在获取Facebook信息后,我将它们引导到注册页面,在那里我将他们的信息填充在表单字段中,他们可以在其中编辑和创建密码.
您只需要确保更新您的
def self.new_with_session(params, session)
Run Code Online (Sandbox Code Playgroud)
添加您为新用户抓取的所有相关Facebook信息并将其分配给新用户对象,以便所有这些字段在注册页面中填充其信息.因此,在他们完成输入密码并添加或更改任何信息并单击提交后,将创建新用户.希望你觉得这很有帮助.
这是关于Devise的wiki页面和railscast omniauth教程的一些想法:http://railscasts.com/episodes/235-omniauth-part-1
归档时间: |
|
查看次数: |
5022 次 |
最近记录: |