21.4. アプリケーショントークンの機能
/api/o/ エンドポイントのトークンに関連付けられた 更新 および 失効 機能は、現在、アプリケーショントークンでのみ実行できます。
21.4.1. 既存のアクセストークンの更新 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、リフレッシュトークンが指定された既存のアクセストークンを示しています。
{
"id": 35,
"type": "access_token",
...
"user": 1,
"token": "omMFLk7UKpB36WN2Qma9H3gbwEBSOc",
"refresh_token": "AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z",
"application": 6,
"expires": "2017-12-06T03:46:17.087022Z",
"scope": "read write"
}
/api/o/token/ エンドポイントは、アクセストークンを更新するために使用されます。
curl -X POST \
-d "grant_type=refresh_token&refresh_token=AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z" \
-u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \
http://<controller>/api/o/token/ -i
refresh_token は、前のアクセストークンの refresh_token フィールドによって提供されます。
認証情報は 、<client_id>:<client_secret> の形式であり、client_id と client_secret は、アクセストークンの基となる関連アプリケーションの対応するフィールドです。
特別な OAuth 2 エンドポイントは x-www-form-urlencoded Content-type の使用のみをサポートしているため、結果として api/o/* エンドポイントは application/json を受け付けません。
成功すると、以前のものと同じスコープ情報を持つ新しい (更新された) アクセストークンを含む応答が、JSON 形式で表示されます。
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Tue, 05 Dec 2017 17:54:06 GMT
Content-Type: application/json
Content-Length: 169
Connection: keep-alive
Content-Language: en
Vary: Accept-Language, Cookie
Pragma: no-cache
Cache-Control: no-store
Strict-Transport-Security: max-age=15768000
{"access_token": "NDInWxGJI4iZgqpsreujjbvzCfJqgR", "token_type": "Bearer", "expires_in": 315360000000, "refresh_token": "DqOrmz8bx3srlHkZNKmDpqA86bnQkT", "scope": "read write"}
更新操作では、元のトークンを削除した直後に、元のトークンと同じスコープと関連アプリケーションを持つ新しいトークンを作成することで、既存のトークンを置き換えます。
/api/v2/tokens/ エンドポイントで、新しいトークンが存在し、古いトークンが削除されていることを確認してください。