LinkedIn 最近更改了他们的 API,要求第三方在他们请求的信息中更加明确。为了使用omniauth 访问用户过去的就业历史和教育,您必须传递r_fullprofile 权限令牌(之前,您不必对过去的就业或教育数据提出特定请求)。要访问用户的电子邮件地址,您需要传递 r_emailaddress 权限令牌。在有人问之前,我正在使用新的 LinkedIn API 密钥(旧密钥不受最近更改的影响)。
omn iauth-linkedin gem最近已更新,以考虑 LinkedIn 的权限更改,但我仍然在通过身份验证流程的所有部分传递这个新的范围参数时遇到问题。我按照 omniauth-linkedin 自述文件中提供的说明创建我的 config/omniauth.rb 文件:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :linkedin, ENV['LINKEDIN_KEY'], ENV['LINKEDIN_SECRET'],
:scope => 'r_fullprofile,r_emailaddress', :fields => ['id', 'email-address', 'first-name', 'last-name', 'headline', 'industry', 'picture-url', 'public-profile-url', 'location', 'positions']
end
范围似乎成功通过了身份验证的第一部分,在下面的第一个屏幕截图中可见(您的完整个人资料...您的电子邮件地址):
但是,在用户输入他们的凭据后,范围似乎丢失了,只有默认的“您的个人资料概览”字段被传输:
非常坚持这一点,并且真的可以使用一些帮助,因为我需要为我的用户提供完整的个人资料和教育数据。让我知道是否需要提供我的 auth_controller 代码。谢谢你。