所以我在我的Rails 5应用程序中使用omniauth并设计了LinkedIn身份验证.
omniauth-linkedin-oauth2 (0.2.5)
devise (4.4.1)
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,一切都运行良好,用户可以使用LinkedIn进行注册和身份验证.但是,"auth.info.image"中返回的默认图像是50x50,这太小了.我已经对此做了很多阅读,建议的方法是在设计字段列表中添加"picture-urls ::( original)".这与我在文档中看到的一致(https://developer.linkedin.com/docs/fields/basic-profile).然而,这似乎不起作用,我想知道是否有一个错误,或者这是否是某种过时的信息.
我的devise.rb omniauth配置看起来像:
config.omniauth Rails.application.config.omniauth, app_key, app_secret],
scope: 'r_basicprofile r_emailaddress',
fields: %w(id email-address first-name last-name picture-url picture-urls::(original))
Run Code Online (Sandbox Code Playgroud)
即使在指定了这些字段之后,图片网址中也不会返回任何值.
self.remote_photo_url = auth.extra.raw_info.pictureUrls['values'].first
Run Code Online (Sandbox Code Playgroud)
我已经检查了返回的数据,并且无处可寻.不知道我可能会遗漏什么,但任何建议将不胜感激!
ruby-on-rails linkedin omniauth omniauth-linkedin linkedin-api
我正在尝试通过 LinkedIn 在 rails 5.2 应用程序中设置身份验证,同样我指的是设计提供的文档,但出现以下错误:
ERROR -- omniauth: (linkedin) Authentication failure! Connection reset by peer: Faraday::SSLError, Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
我已经使用以下 gems 添加了这些配置
我什至尝试在包含有效 SSL 证书的生产服务器中的活动域上运行,但仍然抛出相同的错误。
我正在尝试使用Devise,Omniauth和omniauth-linkedin-oauth-2 获取Omniauth的Linkedin访问令牌.无论是facebook还是twitter,我都可以获得访问令牌,但是当我尝试使用linkedin时,我在omniauth回调中遇到以下错误:
ERROR -- omniauth: (linkedin) Authentication failure! invalid_credentials: OAuth2::Error, invalid_request: missing required parameters, includes an invalid parameter value, parameter more than once. : Unable to retrieve access token : appId or redirect uri does not match authorization code or authorization code expired
{"error_description":"missing required parameters, includes an invalid parameter value, parameter more than once. : Unable to retrieve access token : appId or redirect uri does not match authorization code or authorization code …
Run Code Online (Sandbox Code Playgroud) 我有一个站点,配置为使用Devise与Omniauth一起使用多个Oauth2 API,并且一直运行到上周.目前登录Twitter和Github仍然正常运行; 然而,Facebook,LinkedIn和谷歌给我一个错误,指出重定向URI不匹配.错误消息读取:
Facebook的:
错误 - omniauth:(facebook)身份验证失败!invalid_credentials:> OAuth2 ::错误,:{"error":{"message":"验证验证码时出错.请确保您的> redirect_uri与您在OAuth对话框请求中使用的相同","输入":" OAuthException", "代码":100, "fbtrace_id": "XXXXXXXXXX"}}
LinkedIn:
错误 - omniauth:(linkedin)身份验证失败!invalid_credentials:> OAuth2 :: Error,invalid_request:缺少必需参数,包含无效参数值,参数多次.:无法检索访问令牌:appId或重定向uri与授权代码或授权代码过期不匹配{"error_description":"缺少必需参数,包含无效参数值,参数多次.:无法检索访问令牌:appId或重定向uri与授权代码或授权代码过期不匹配","错误":"invalid_request"}
谷歌
错误 - omniauth:(google_oauth2)身份验证失败!invalid_credentials:> OAuth2 :: Error,redirect_uri_mismatch:{"error":"redirect_uri_mismatch"}
我查看了Chrome开发者控制台中针对所有这三个请求发送的请求,并且回调的重定向uri与每个API注册的uri相匹配(自从它工作以来没有更改).
回溯跟踪此错误的挑战是,当我安装新功能时,由于我在最近的集成测试期间直接登录或使用Github登录,因此我不能100%确定这些错误.(大课程学到了!)可能影响这一点的重大变化之一就是我整合了Devise的Traceable扩展,我需要Warden Gem.但是,我删除了Traceable和Warden配置,并将用户模型和配置文件恢复到以前的状态,我遇到了同样的问题.
我通常更愿意提供更多的代码示例,但说实话,我不确定从哪个代码开始.我希望有人遇到类似的问题,并指出正确的方向开始.
要开始,下面是我的Devise初始化程序,注释已删除以缩短
Devise.setup do |config|
config.mailer_sender = 'no-reply@' + ENV['DOMAIN_NAME']
config.mailer = 'Devise::Mailer'
require 'devise/orm/active_record'
config.case_insensitive_keys = [:email]
config.strip_whitespace_keys = [:email]
config.skip_session_storage = [:http_auth]
config.stretches = Rails.env.test? ? 1 : 10
config.allow_unconfirmed_access_for = 10.days
config.reconfirmable = true
config.confirmation_keys = [:email]
config.remember_for = 2.weeks
config.expire_all_remember_me_on_sign_out = true
config.password_length = 8..72 …
Run Code Online (Sandbox Code Playgroud) ruby-on-rails devise omniauth-facebook omniauth-linkedin google-oauth2