Request phase initiated.
Started GET "/users/auth/linkedin/callback?code=...&state=..." for 127.0.0.1 at 2022-09-14 20:50:20 +0200
D, [2022-09-14T20:50:20.537126 #37240] DEBUG -- omniauth: (linkedin) Callback phase initiated.
E, [2022-09-14T20:50:21.021252 #37240] ERROR -- omniauth: (linkedin) Authentication failure! invalid_credentials: OAuth2::Error, invalid_request: A required parameter "client_secret" is missing
{"error":"invalid_request","error_description":"A required parameter \"client_secret\" is missing"}
Processing by Users::OmniauthCallbacksController#failure as HTML
gem 'omniauth'
gem 'omniauth-linkedin-oauth2'
我可以确认您的修复确实有效。谢谢你!我将其添加到我的应用程序的 config/initializers.rb 中,如下所示
module OmniAuth
module Strategies
class LinkedIn < OmniAuth::Strategies::OAuth2
def token_params
super.tap do |params|
params.client_secret = options.client_secret
end
end
end
end
end
Add this in your code
lib/策略/linkedin.rb
And also this code in your devise.rb
需要“策略/linkedin”
我对 Rails 和编码很陌生,所以我无法对这个问题提供任何解释,我挣扎了几个小时,我正在使用 devise,所以对我来说,解决这个问题的方法是通过添加降级 oauth2 版本:
gem 'oauth2', '~> 1.0'
在我的 Gemfile 中并运行:
$ bundle install
我的猜测是这与 JSON 有关,我不确定它是否会影响设计功能。 Bhavesh Vadhvana的答案也有效。
截至 2023 年 8 月,此问题的修复方法是将omniauth-linkedin-oauth2 gem 升级到最新版本(如 https://github.com/decioferreira/omniauth-linkedin-oauth2/pull/71 已合并并发布为 v1.0.1)。