Rails7、OAuth2无法在get_token中设置redirect_uri

Rails 7, OAuth2 unable to set redirect_uri in get_token

我有全新的 Rails 7.0.3,Ruby 3.1.2,带有 oauth2 gem(v.1.4.9)的应用程序。

为了初始化 OAuth,我使用:

client = OAuth2::Client.new(client_auth[:client_id], client_auth[:client_secret], site: client_auth[:api_url])

redirect_to client.auth_code.authorize_url(scope: 'v2 read write', redirect_uri: https://my_app.com/auth/')

成功登录到目标站点后,用户将使用代码重定向到我的控制器。我无法使用 client.auth_code.get_token

获取令牌
client.auth_code.get_token(code, redirect_uri: 'https://my_app.com/auth/')
# when redirect_uri param is different than localhost it raise Exception: 

/gems/faraday-2.3.0/lib/faraday/encoders/nested_params_encoder.rb:131:in 'new_context': no implicit conversion of String into Integer (TypeError)

我无法将 localhost 用作 redirect_uri,因为提供商会检查此参数。知道为什么这不起作用吗?

Gemfile.lock
...
oauth2 (1.4.9)
      faraday (>= 0.17.3, < 3.0)
      jwt (>= 1.0, < 3.0)
      multi_json (~> 1.3)
      multi_xml (~> 0.5)
      rack (>= 1.2, < 3)

经过多次尝试,我意识到令牌 url 与标准不同。当我以这种方式设置客户端时,一切正常。

client = OAuth2::Client.new(client_auth[:client_id], client_auth[:client_secret], site: client_auth[:api_url], token_url: 'api/open/oauth/token')