2

私はRailsの初心者です。

だから...私のRailsアプリでは、OmniAuth Facebook統合があり、いくつかのフィールド、例えば名、姓、場所をデータベースに追加したいと考えています。

このwikiをフォローしました。ログインは簡単ですが、追加のフィールド (名、姓、場所) はありません。

そこで、これをconfig/initializers/devise.rb に追加しました:

require 'omniauth-facebook'
config.omniauth :facebook, '123456...', '123456...',
    scope: 'first_name, last_name, location',
    stategy_class: OmniAuth::Strategies::Facebook

したがって、私が正しければ、上記はこれらの追加フィールドを要求します。

ここで、モデル user.rb に、要求された値をデータベースに渡す 3 行を追加します。

def self.find_for_facebook_omniauth(omniauth, signed_in_resource=nil)
  basic = {
      provider:  omniauth.provider,
      uid:       omniauth.uid,
      }
  User.where(basic).first || User.create(basic.merge(
      firstname: omniauth.info.firstname,  # these are the
      lastname:  omniauth.info.lastname,   # lines I'm not
      location:  omniauth.info.location,   # sure of
      email:     omniauth.info.email,
      password:  Devise.friendly_token[0,20],
      ))
end
4

1 に答える 1