Я использую Omniauth с Devise для аутентификации пользователей через Facebook для веб-приложения. Я пишу с использованием Rails 3.0.4
Я смоделировал его после Railscasts Райана Бейтса:
http://railscasts.com/episodes/235-omniauth-part-1
http://railscasts.com/episodes/236-omniauth-part-2
На данный момент я могу зайти на свой сайт с моей учетной записью Facebook и извлечь свою электронную почту из хэша обратного вызова, который для меня выглядит так:
request.env["omniauth.auth"]
{"user_info"=>
{"name"=>"Eric Hu",
"urls"=>
{"Facebook"=>"http://www.facebook.com/...", "Website"=>nil},
"nickname"=>"...",
"last_name"=>"Hu",
"first_name"=>"Eric"},
"uid"=>"...",
"credentials"=>
{"token"=> "..."},
"extra"=>
{"user_hash"=>
{"name"=>"Eric Hu",
"timezone"=>-8,
"gender"=>"male",
"id"=>"...",
"last_name"=>"Hu",
"updated_time"=>"2011-02-21T17:46:19+0000",
"verified"=>true,
"locale"=>"en_US",
"link"=>"http://www.facebook.com/...",
"email"=>"...",
"first_name"=>"Eric"}},
"provider"=>"facebook"}
(replaced some fields with "..." for my own privacy)
Сейчас я использую это поле, чтобы получить адрес электронной почты пользователя
request.env["omniauth.auth"]["user_info"]["extra"]["email"]
Я не знаю, зависит ли хэш обратного вызова от настроек пользователя - я фактически ограничил отображение электронной почтынастройки на Facebook, и он все еще отображается.Чтобы убедиться, что мой код обрабатывает любые возможные вариации с этим хэшем, я хотел бы найти некоторую справку о том, как выглядит этот хэш обратного вызова для входа в Facebook и как он может изменяться.До сих пор я не нашел ничего в SO или в документации для разработчиков Facebook.
Вопрос: есть ли официальная ссылка на хэш обратного вызова для входа в Facebook?Я не хочу предполагать, что все элементы хеша существуют для всех пользователей.Я включил здесь как можно больше информации для других людей, которые хотят аутентифицировать свои приложения rails, используя Facebook и Omniauth.