非常简单的问题。
我遇到了"电子邮件不能空白"我的rails app / omniauth / facebook登录问题。关于这一点有很多问题,答案中有些用户提供的是电话号码而不是电子邮件地址。但是在我的情况下,我打开了一个facebook帐户,其中一个电子邮件地址可以在开发过程中与omniauth一起使用,但是当我使用它生产时它回来的电子邮件不能为空。我的凭据是正确的。
任何人都可以解释如何将这些事件组合起来吗?
编辑:这是我的控制器代码(请记住,我的设计模型是"会员"并且有相关的个人资料模型"用户"
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。