我在Rails 4.0.0中有一些旧应用程序。直到2017年7月8日,facebook注册工作正常,但现在不推荐使用v2.3,用户无法在我的页面上注册。
这是user.rb代码:
def self.from_omniauth(auth)
oauth = Koala::Facebook::OAuth.new('xxx', 'xxxx')
new_access_info = oauth.exchange_access_token_info auth.credentials.token
new_access_token = new_access_info["access_token"]
new_access_expires_at = DateTime.now + new_access_info["expires"].to_i.seconds
user = where(auth.slice(:provider, :uid)).first
if !user.present?
user = where(email: auth.info.email).first
if user.present?
user.provider = auth.provider
user.uid = auth.uid
user.oauth_token = new_access_token
user.oauth_expires_at = new_access_expires_at
user.save!
else
user = User.new
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.profile.gender = 1
user.confirmed_at = Time.now
user.first_name = auth.info.first_name
user.fb_image_url = auth.info.image
user.oauth_token = new_access_token
user.oauth_expires_at = new_access_expires_at
@str = user.fb_image_url.to_s
@index = @str.index('type')
@sliced = @str.slice(0, @index)
@slices = @sliced + 'width=800&height=800'
user.fb_image_url = @slices
if auth.info.gender == 'female'
user.fb_gender = 1
elsif auth.fb_gender == 'male'
user.fb_gender = 2
end
end
end
user
end
这是/initializers/devise.rb:
require "omniauth-facebook"
config.omniauth :facebook, 'xxxxxxx', 'xxxxxxxxx',
scope: 'email,public_profile',
info_fields: 'email',
client_options: {
site: 'https://graph.facebook.com/v2.4', authorize_url: "https://www.facebook.com/v2.4/dialog/oauth"},
token_params: { parse: :json }
Gemfile - gem 'omniauth-facebook', '1.4.0'
我需要改变什么来使它工作?现在点击“通过Facebook注册”用户被重定向到Facebook,他登录,接受权限,并在重定向到我的网站后 - 他重定向到/ users / sign_in - 不像之前的/ users / sign_up那样填写更多的字段。
我停止在Rails中制作应用程序,所以不知道如何制作它。谢谢你的帮助
编辑:
好的,现在它可以工作,但facebook不会返回电子邮件,所以我需要在重定向到我的网站后添加电子邮件字段。电子邮件为何空白?
答案 0 :(得分:0)
您是否尝试在devise.rb中添加此内容:
config.omniauth:facebook," KEY"," SECRET",范围:'电子邮件',info_fields:'电子邮件,姓名'