You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Doorkeeper 5.4.0升级后find_or_create_for报ArgumentError求助

Doorkeeper 5.4.0 find_or_create_for 参数变更问题

这个问题很多升级到5.4.0的开发者都遇到过——Doorkeeper在这个版本里悄悄把Doorkeeper::AccessToken.find_or_create_for的参数从位置参数改成了强制关键字参数,而且确实没在CHANGELOG里明确说明,属于文档遗漏。

你的报错信息已经明确提示了:方法现在要求传入application、resource_owner、scopes这几个必填关键字参数,而你还是用旧版本的位置参数传参,所以触发了参数数量不匹配的错误。

只需要把你的调用代码改成关键字参数形式即可:

@access_token = Doorkeeper::AccessToken.find_or_create_for(
  application: oauth_client,
  resource_owner: model.user.id,
  scopes: oauth_scopes,
  expires_in: oauth_expiry_time,
  use_refresh_token: oauth_server.refresh_token_enabled?
)

参数对应关系:

  • 原第一个参数 oauth_client → application:
  • 原第二个参数 model.user.id → resource_owner:
  • 原第三个参数 oauth_scopes → scopes:
  • 原第四个参数 oauth_expiry_time → expires_in:
  • 原第五个参数 oauth_server.refresh_token_enabled? → use_refresh_token:

这个变更的目的是提升代码可读性,避免位置参数顺序混淆,但因为没在CHANGELOG里说明,导致很多升级的开发者踩坑。

内容的提问来源于stack exchange,提问作者tvieira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 03:16:04