0

我在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不回郵件,所以我需要添加電子郵件後場重定向到我的網站。爲什麼電子郵件空白?

回答

0

你嘗過devise.rb添加此:

config.omniauth:臉譜, 「KEY」, 「祕密」,適用範圍: '電子郵件',info_fields: '電子郵件,姓名'

而且有關更多信息,請查詢https://github.com/mkdynamic/omniauth-facebook

+0

正如你可以在我的代碼中看到的那樣:scope和info_fields – Wordica