Я только что решил эту проблему, не используя отдельный драгоценный камень 'linkedin', это было довольно сложно, так как по этому вопросу явно отсутствовала документация!
Во-первых, вам нужно сделать адрес электронной почты доступным.добавив опцию fields в вашу конфигурацию LinkedIn Omniauth, вам также потребуется переопределить request_token_path, чтобы добавить область действия r_emailaddress, необходимую для получения адреса электронной почты пользователя.
Мой файл в конечном итоге выглядел примерно так (NB.Ruby 1.9.3):
provider :linkedin, external_services['linkedin']['api_key'], external_services['linkedin']['api_secret'], client_options: {request_token_path: '/uas/oauth/requestToken?scope=r_emailaddress'}, fields: ['id', 'first-name', 'last-name', 'headline', 'industry', 'picture-url', 'public-profile-url', 'email-address']
ПРИМЕЧАНИЕ. Не забудьте поменять external_services ['linkedin'] ['api_key'] и external_services ['linkedin'] ['api_secret'] на свои собственные.
После этого вашему пользователю будет предложено разрешить использование его адреса электронной почты, а также его базового ресурса, и вы получите доступ к нему, как только он будет возвращен:
auth['extra']['raw_info']['emailAddress']
* 1014.* Вероятно, я должен зафиксировать это изменение обратно в omniauth-linkedin, чтобы вы могли просто установить область действия: r_emailaddress в настройках провайдера, избегайтедублирование имен полей и получение электронной почты обратно в разделе информации объекта auth.
Если я получу время после завершения этого раздела моего проекта, я сделаю это.