ruby-on-railsfacebookoauthsorcery

Access Sorcery oauth response data


I'm using Sorcery gem with External submodule. For some reason I'm not getting an email back from Facebook and I'm pretty sure I have things configured correctly. I'm trying to troubleshoot this further but I can't figure out how to read what data IS being returned via oauth to verify where things are breaking down. Where can I pry in and read this info? Thanks!

Here is my sorcery config.

Rails.application.config.sorcery.submodules = [:external]

Rails.application.config.sorcery.configure do |config|

  config.external_providers = [:facebook, :google]

  config.facebook.key = "#{Rails.application.secrets.sorcery_facebook_key}"
  config.facebook.secret = "#{Rails.application.secrets.sorcery_facebook_secret}"
  config.facebook.callback_url = "#{Rails.application.secrets.sorcery_facebook_callback_url}"
  config.facebook.user_info_path = "me?fields=email,first_name,last_name"
  config.facebook.user_info_mapping = {:email => "email"}
  config.facebook.access_permissions = ["email"]
  config.facebook.scope = "email"
  config.facebook.display = "popup"
  config.facebook.api_version = "v2.5"

  config.user_config do |user|
    user.authentications_class = Authentication
  end

  config.user_class = User
end

Solution

  • Well, technically this answers the question of how to find out what is being returned.

    Inside your oauth controller if you call access_token.get('me?fields=email') or whatever fields you're wanting you'll get a response with a URL field set. Copy that URL into a browser and you'll get a JSON list of your data. In my case I get nothing with email but I'm able to return first_name, last_name, name. Not quite sure why I still can't get email, but hopefully this helps somebody troubleshoot in the future.

    Another way would be to build the URL yourself if you have the access_token available.

    https://graph.facebook.com/me?access_token=<access token goes here>&fields=first_name,last_name,email

    Access token is retrievable with @access_token.token from oauth controller.

    UPDATE

    So silly...I had the config correct, but apparently had never logged out of Facebook since I'd made the proper corrections. Logging out and having oauth connect again seems to have fixed things.