Получение информации из Facebook Хем аутентификации OmniAuth - PullRequest
1 голос
/ 02 апреля 2012

Я новичок в Ruby и Rails, но мне удалось использовать OmniAuth для аутентификации через Facebook. Все отлично работает, я могу создавать пользователей, и они могут войти через Facebook.

Проблема в том, что я хотел бы взять некоторые пользовательские данные (например, электронную почту, фотографию профиля и т. Д.) И сохранить их.

Проходя через README (https://github.com/mkdynamic/omniauth-facebook), Мне удалось найти:

Вот пример хэша аутентификации, доступного в request.env ['omniauth.auth']:

{
  :provider => 'facebook',
  :uid => '1234567',
  :info => {
    :nickname => 'jbloggs',
    :email => 'joe@bloggs.com',
    :name => 'Joe Bloggs',
    :first_name => 'Joe',
    :last_name => 'Bloggs',
    :image => 'http://graph.facebook.com/1234567/picture?type=square',
    :urls => { :Facebook => 'http://www.facebook.com/jbloggs' },
    :location => 'Palo Alto, California',
    :verified => true
  }
} 

Я попытался выполнить дополнительный поиск по хэшу аутентификации и получил следующее, в котором перечислены некоторые данные, которые можно получить: https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema

Дело в том, что я просил определенные разрешения. Вопрос в том, как узнать, какую информацию отправляет Facebook? К сожалению, сказать, что информация находится в request.env ['omniauth.auth'], не очень хорошо для меня. Как мне получить информацию отсюда?

Я настоящий новичок, изучающий руководство по Rails (http://ruby.railstutorial.org/), но пытающийся создать собственное приложение методом проб и ошибок.

1 Ответ

2 голосов
/ 02 апреля 2012

request.env ['omniauth.auth'] даст вам хэш.Проверьте документы Ruby на предмет того, что вы можете делать с хешем.

http://ruby -doc.org / core-1.9.3 / Hash.html

Для любогоэлементы, которые не всегда будут там, вы можете просто проверить на blank? (удобный метод Rails), например,

omniauth = request.env['omniauth.auth']
unless omniauth['info']['email'].blank?
  send_spam omniauth['info']['email'] # ;)
end

Вы, вероятно, найдете следующую скринкаст полезной, если вы ее еще не видели:

http://railscasts.com/episodes/235-omniauth-part-1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...