/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

refresh_tokenについて調べたことのメモ

最近raindropAPIを使うのにOAuth2の認証を実装しています。

そこで出てきたrefresh_token。これはどういうときに使うのかというのを疑問に思っていて、ちょっと調べたのでメモっておきます。

どんな時に使うのか

まずはrefresh_tokenはどういうときに使うのか。

  • access_tokenの有効期限が切れた場合、リフレッシュトークンを使って新しいaccess_tokenを取得する。
  • ユーザーの再認証を行わずに、新しいaccess_tokenを取得する場合に利用する。

なるほど。

それ以外に出てくる用語

関連する用語として、以下の用語があります。

単語 説明
redirect_uri 認可コードを受け取るためのリダイレクトURI
client_id クライアントアプリを識別するID
client_secret クライアントアプリの秘密鍵
code 認可エンドポイントが発行する認可コード
access_token リソースにアクセスするためのトーク
refresh_token access_tokenの更新に使用するトーク

OAuth2の認証の流れ

流れ的には以下。

クライアントアプリが認可エンドポイントにリクエストを送信

認可が得られるとcodeが発行され、redirect_uriにリダイレクト

codeとclient_id、client_secretを使ってaccess_tokenとrefresh_tokenを取得

access_tokenの有効期限切れ時にrefresh_tokenを使ってaccess_tokenの更新

一度access_tokenを取得して、それが有効期限が切れた場合にrefresh_tokenを使用することになる。

 

結局どうすればいいのか?

本来の実装としては、既存のaccess_tokenを使用して、それが期限切れ(401が返ってきた)場合にはrefresh_tokenを使って新たにaccess_tokenを取得する・・・・という流れがいいのかなと思いますが、そのほかの方法もあるかと思っています。

例えば、毎回refresh_tokenを使ってaccess_tokenを取得するような実装にするとか。

どっちのほうがいいのかもっと事例を調べてみて明確にしようかと思います。いいサイトがあればぜひ教えてくださいー。

ではでは。