LoginSignup
4
1

More than 5 years have passed since last update.

Doorkeeperでアカウント登録時にaccess_tokenをレスポンスとして返す

Posted at

Doorkeeper gemでモバイルアプリでのid/passwordの送信でアカウント登録をしたい場合、skip_authorizationをtrueにした状態でUserをcreateしsignupし、そしてaccess_tokenをレスポンスとして返すというのはどうやってやるんだろうというのを調べるのに時間がかかったので自分のやり方を書いておきます。

  • Devise::RegistrationsControllerを継承したControllerを用意
    • createメソッドでアカウント登録の処理を実装
      • sign_up(resource_name, @resource)
      • access_tokenを生成するメソッドを用意(下記)

重要なのがaccess_tokenを生成するメソッドをアカウント登録後に呼び出すことで、次のようになります

  # @return [AccessToken]
  def access_token(user_id:)
    Doorkeeper::AccessToken.create!({
      :resource_owner_id  => user_id,
      :scopes             => nil,
      :expires_in         => Doorkeeper.configuration.access_token_expires_in,
      :use_refresh_token  => Doorkeeper.configuration.refresh_token_enabled?
    })
  end

これDoorkeeperのissueに元ネタが書いてあって、たどり着くのにかなり時間かかりました。

issueでは、パラメータなど違うので両方参考になると思います。
私はdoorkepperで生成されるテーブルはoauth_access_tokensしか作っておらず、application系のテーブルを使っていないので、application_idの変数はセットしていません。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1