1

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 をアップグレードすると壊れるかどうかがわかります。

4

1 に答える 1