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
相关产品推荐
相关产品推荐

