0

非常に単純な質問です。

rails app/omniauth/facebook のログインで「メールを空白にすることはできません」という問題が発生しました。これには多くの質問があり、回答の中には、電子メール アドレスではなく電話番号を入力するユーザーがいるというものがあります。ただし、私の場合、開発中の omniauth で正常に動作する電子メール アドレスを使用して Facebook アカウントを開いていますが、それを本番環境で使用すると、電子メールを空白にすることはできません。私の資格情報は正しいです。

この組み合わせのイベントをどのように行うことができたのか、誰か説明できますか?

編集:これが私のコントローラーコードです(私のデバイスモデルは「メンバー」であり、関連するプロファイルモデル「ユーザー」があることに注意してください

def provider
     auth = request.env["omniauth.auth"]
     member_email_check = Member.find_by_email(auth.info.email)
     if member_email_check.present? && User.find_by_member_id(member_email_check.id)
     sign_in_and_redirect member_email_check
     return false
    else
       member = Member.where(provider: auth.provider, uid: auth.uid).first_or_create do |member|
      member.provider = auth.provider
      member.uid = auth.uid
      member.email = auth.info.email
     end
   end

  if auth.provider == "facebook"
    if member.save
       unless User.find_by_member_id(member.id)
           User.create(:member_id => member.id,
                  :full_name => auth.info.first_name + " " + auth.info.last_name,
                  :first_name => auth.info.first_name,
                  :last_name => auth.info.last_name,
                  :email => auth.info.email,
                  :picture => auth.info.image)
           end
         sign_in_and_redirect member
       else
         session["devise.member_attributes"] = member.attributes
         redirect_to new_member_registration_url
       end
     end
   end

   alias_method :facebook, :provider

 end

解決しました!

        config.omniauth :facebook, "<YOUR API KEY>", "<YOUR SECRET KEY>", scope: 'email', info_fields: 'email,name,first_name,last_name,gender'

電子メール スコープと info_fields を追加しました。

4

0 に答える 0