Rails:Omniauth Facebook权限目前错开 - 为什么会这样?

时间:2014-02-02 04:08:42

标签: ruby-on-rails facebook-graph-api omniauth

当我最初通过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

1 个答案:

答案 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"