我在Rails 4.0.0中有一些舊的應用程序。直到2017年7月8日Facebook註冊才能正常工作,但現在v2.3已過時,用戶無法在我的頁面上註冊。從api v2.3到v2.4的Facebook遷移 - Rails omniauth
這裏是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不回郵件,所以我需要添加電子郵件後場重定向到我的網站。爲什麼電子郵件空白?
正如你可以在我的代碼中看到的那樣:scope和info_fields – Wordica