2017-01-02 13 views
0

omniauth-facebook gemからログインしてユーザーを作成しようとしていますが、ハッシュを取り戻していますが、必要なデータがすべてあり、しようとするもの、セットアップは以下の通りです:omniauth-facebookにはすべてのデータが含まれていません

私が取得したいすべてがfirst_nameのある、LAST_NAME、電子メールやバイオ

セッションコントローラ

def create 
    render text: request.env['omniauth.auth'].to_json 
end 

ルート

get  '/auth/:provider/callback', to: 'sessions#create' 

omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, Rails.application.secrets.facebook_app_id, 
    Rails.application.secrets.facebook_app_secret, 
    :scope => 'email,public_profile', :info_fields => 
    'name,email,first_name,last_name,bio' 
    provider :twitter, Rails.application.secrets.twitter_app_id, 
    Rails.application.secrets.twitter_app_secret 
end 

返さハッシュ:

{ 
    "provider": "facebook", 
    "uid": "1**************", 
    "info": { 
    "name": "Philip Davies", 
    "image": "http://graph.facebook.com/1*************/picture?type=square" 
    }, 
    "credentials": { 
    "token": "************", 
    "expires_at": 1488480906, 
    "expires": true 
    }, 
    "extra": { 
    "raw_info": { 
     "name": "Philip Davies", 
     "id": "1***********" 
    } 
    } 
} 

答えて

1

私はこの同じ問題を持っていたし、それを解決することができませんでしたが、コアラの宝石(https://github.com/arsduo/koala)を経由して、回避策を見つけてしまいました。 facebook-omniauth gemを使ってログインし、認証トークンを保存してから、Koalaを使ってユーザーのFacebookプロフィールから特定の情報を取得しました。

私user.rbは、次のようになります。

def self.from_omniauth(auth) 
     where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 
     user.provider = auth.provider 
     user.uid = auth.uid 
     user.password = Devise.friendly_token[0,20] 
     user.oauth_token = auth.credentials.token 
     user.oauth_expires_at = Time.at(auth.credentials.expires_at) 
     @user_info = user.facebook.get_object(:me, { fields: [:first_name, :last_name, :email]}) 
     user.first_name = @user_info['first_name'] 
     user.last_name = @user_info['last_name'] 
     user.email = @user_info['email'] 
    end 
end 

def facebook 
    Koala::Facebook::API.new(oauth_token) 
end 

私はそれが完璧なソリューションではありません知っているが、それは私が私がやろうとしたので、多分それは同様にあなたのために働くものを行うことができました。ご質問がありましたら、私にお知らせください。

+0

私は同じ問題を抱えていました。コアラを使用した回避策はそれを修正しました。 – spnkr

関連する問題