我需要扩展Doorkeeper::OAuth::TokenResponse
类,因为我想向返回的数据添加一些东西。默认情况下,该类创建一个返回体,如下所示:
{
"access_token": "...",
"token_type": "bearer",
"expires_in": 7200,
"refresh_token": "...",
"scope": "some_scope"
}
我想保留它并添加一个新字段:
{
"access_token": "...",
"token_type": "bearer",
"expires_in": 7200,
"refresh_token": "...",
"scope": "some_scope",
"my_custom_field": 47
}
我可以在没有猴子修补TokenResponse
课程的情况下做到这一点吗?如果没有,我可以做些什么来改进我当前的实现(为了更好地兼容新版本的 Doorkeeper 等)?这是我当前的实现:
module Doorkeeper
module OAuth
class TokenResponse
old_body = instance_method(:body)
define_method(:body) do
body = old_body.bind(self).()
if self.token.scopes.include? 'some_scope'
body[:my_custom_field] = 47
end
body
end
end
end
end
我确实对该功能进行了测试,所以我会知道升级 Doorkeeper gem 是否会破坏它。