Doorkeeperの認証で使われるtokenを取得

doorkeeprの処理のなかで削除済のユーザのステータスが取りたくて、tokenを取得できるかやってみました。

イレギュラーアクセス -> tokenが取れない。
通常のアクセス -> tokenが取れる。ユーザがひける。
削除済または退会済みユーザへのアクセス -> tokenが取れる。ユーザがひけない。

って感じでしょうか?


下記のようにしたら取れました。
あとはこれをうまくつかってerrorとかで削除済のレスポンスを返す感じですね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# frozen_string_literal: true

require 'doorkeeper/grape/helpers'

module V1
  class Root < Grape::API
    helpers Doorkeeper::Grape::Helpers

    before do
      authorization_request = Doorkeeper::Grape::AuthorizationDecorator.new(request)

      # これでrequestからtokenが取れる
      token = Doorkeeper::OAuth::Token.from_request(authorization_request, *Doorkeeper.configuration.access_token_methods)

      # そのトークンを使ってユーザのトークンが取れる。
      access_token = Doorkeeper::AccessToken.by_token(token)

      doorkeeper_authorize!
    end

    mount Users
  end
end

Comments