Railsomniauth“无法通过 Line 对您进行身份验证,因为“凭据无效”。”

问题描述 投票:0回答:2

我有完美的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         

但是为什么会出现这个错误,我还是不明白。

非常感谢你们的帮助,伙计们!

ruby-on-rails omniauth ruby-on-rails-6
2个回答
0
投票

我也有同样的问题。搜索后发现gem版本可疑

升级

omniauth-line
到最新版本。现在(27/04/2023)是
0.1.0

它对我有用!


0
投票

我遇到了类似的问题,但我没有使用所需的omniauth gem,而是选择从头开始实现一个解决方案,以与Current Line OAuth版本(V2.1)保持同步。我将提供这种替代方法的代码。

https://github.com/smapira/line-rails-app-sandbox/blob/main/app/controllers/line_login_api_controller.rb

© www.soinside.com 2019 - 2024. All rights reserved.