我有完美的omniauth授权,但最近我发现它现在无效了。当我单击“Line”登录按钮时,它会将我重定向到 Line 端授权页面,然后我单击“Enter”按钮,它将我重定向回我的网站,但我没有看到授权,而是看到此消息
Could not authenticate you from Line because "Invalid credentials".
我在 Facebook 上遇到了同样的错误,但我添加了
token_params: { parse: :json }
,问题就消失了。毕竟我完全没有这个参数,但无论如何 - 对于 :line 提供程序它不起作用。我尝试将其添加到initializers/omniauth.rb
:
# frozen_string_literal: true
Rails.application.config.middleware.use OmniAuth::Builder do
provider :line,
Application.credentials[:omniauth][:line_channel_id],
Application.credentials[:omniauth][:line_secret_id],
token_params: { parse: :json }
end
我尝试将其添加到
devise.rb
(与:faceboook提供商相同):
config.omniauth :line, Application.credentials[:omniauth][:line_channel_id],
Application.credentials[:omniauth][:line_secret_id],
token_params: { parse: :json }
我尝试将 gem
omniauth-line
版本从“0.0.5”更改为“0.0.3”,但这没有意义。最糟糕的是,我不知道它什么时候坏了。我想在我将 gem 'omniauth-rails_csrf_protection', '~> 0.1'
添加到我的 Gemfile 中之后。但我已经尝试将其删除,但没有任何改变。当然,我已经检查过两次凭证,绝对正确。但它在生产或开发模式下都不起作用。
在日志中我发现了这个:
开始了
GET "/users/auth/line/callback?code=dqutKmHp3..."
ERROR -- omniauth: (line) Authentication failure! invalid_credentials: OAuth2::Error, invalid_grant: redirect_uri does not match
{"error":"invalid_grant","error_description":"redirect_uri does not match"}
在任何环境、生产环境、本地环境、登台环境中都会出现相同的错误。
当我跑步时
rake routes
我可以看到这个动作:
user_line_omniauth_callback GET|POST /users/auth/line/callback(.:format)
在Line测试账户设置页面,我可以看到
Callback URL
:
http://localhost:3000/users/auth/line/callback
但是为什么会出现这个错误,我还是不明白。
非常感谢你们的帮助,伙计们!
我也有同样的问题。搜索后发现gem版本可疑
升级
omniauth-line
到最新版本。现在(27/04/2023)是 0.1.0
它对我有用!
我遇到了类似的问题,但我没有使用所需的omniauth gem,而是选择从头开始实现一个解决方案,以与Current Line OAuth版本(V2.1)保持同步。我将提供这种替代方法的代码。