当我最初通过Omniauth注册我的应用程序时,弹出对话框显示Facebook将只询问我的公开信息。当我在rails控制台中检查用户时,电子邮件字段为“nil”。
当我退出并重新登录时,它会说Facebook也想要我的电子邮件和喜欢。我的电子邮件地址现在出现在终端中运行“rails c”时。我想Facebook要求用户在初始注册/登录时获得这些扩展权限,为什么它目前是错开的?
以下是Omniauth.rb初始化程序的代码:
OmniAuth.config.logger = Rails.logger
OmniAuth.config.on_failure = Proc.new { |env|
OmniAuth::FailureEndpoint.new(env).redirect_to_failure
}
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, FACEBOOK_CONFIG['app_id'], FACEBOOK_CONFIG['secret'],
:scope => 'email,user_likes,user_location', :provider_ignores_state => true
end
这是用户模型:
class User < ActiveRecord::Base
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid, :email, :image)).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.email = auth.info.email
user.image = auth.info.image
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
user.save!
end
end
end
答案 0 :(得分:0)
不知道你是否还有这个问题,但我遇到了同样的问题并通过更改我的facebook.js.coffee文件中的以下代码解决了这个问题:
$('#sign_in').click (e) ->
e.preventDefault()
FB.login ((response) ->
window.location = '/auth/facebook/callback' if response.authResponse), scope: "publish_actions, publish_stream, photo_upload, manage_pages, video_upload"