Gyazo API
Register
アプリケーション登録ページからアプリケーションの登録をすると、client_idとclient_secretを発行できます。これを使用してAPIを利用したアプリケーションを開発してください。また、開発者自身のaccess_tokenも開発者ページで発行することができますので、まずはそちらを利用して開発を進めていくことができます。
全てのAPIはclient_idによる認証またはOAuthによる認証のどちらかが必要となります。ユーザーのログインを必要としないようなアプリケーションにはclient_idによる認証が簡単につかえて便利です。クライアントアプリの開発など、任意のユーザーがそれぞれのデータにアクセス出来るようにするためには、OAuth認証が必須となります。
client_id
client_idを必要とするAPIを使用する際には、下記のパラメータを付与してください。
client_id=LKjneiuajvdafasdsadfsadfasdhfa...
client_idはアプリケーションを利用するユーザーのデータには触れないため、Chromeエクステンション等のオープンな場所で使用しても問題ありません。
OAuth
OAuth2.0に準拠します。開発者ページでアプリケーションを登録し、client_idとclient_secretを取得します。client_secretは漏洩することのないように取り扱ってください。後述する手順に従ってユーザーを認証すると、そのユーザー用のaccess_tokenが発行されます。OAuth認証が必要となるAPIを使用する際は、このaccess_tokenを、
access_token=slakjfdijawnfjhf9w8ufwaejwa...このようにパラメータとして付与するか、あるいは
Authorization: Bearer slakjfdijawnfjhf9w8ufwaejwa...このようにリクエストヘッダーに付与してください。
ユーザーの認証フロー
ユーザによるアプリケーションの認証
ユーザー情報へのアクセスをリクエストするために下記のURLへユーザーをリクエストします。
GET /oauth/authorize
parameter
| Name | Required | Remarks |
|---|---|---|
| client_id | ◯ | |
| redirect_uri | ◯ | Applicationページで設定したもの |
| response_type | ◯ | codeのみ |
| state | ||
| team | 任意のチームを許可する場合はteam=*、特定のチームだけを許可する場合はteam=helpfeelのようにチーム名を指定 |
ユーザーはこのページでGyazoにログインし、アプリケーションがGyazo情報にアクセスすることを許可します。認証がすむと、パラメータに指定したredirect_uriにコールバックされます。その際に、codeというパラメータが返ってきます。このcodeを利用して、ユーザーのaccess_tokenを取得します。
http://example.com/callback?code=asdklfajsdksajen...
また,CSRF対策としてstateパラメータの利用が推奨されます。stateパラメータを設定した場合、codeと同時にstateが返されます。
http://example.com/callback?code=asdklfajsdksajen...&state=wxyz...
access_tokenの取得
POST /oauth/token
parameter
| Name | Remarks |
|---|---|
| client_id | |
| client_secret | |
| redirect_uri | Applicationページで設定したもの |
| code | |
| grant_type | authorization_codeのみ |
このレスポンスにaccess_tokenが含まれているので、これをアプリケーションで保存してAPIを利用するときに使います。
HTTP/1.1 200 OK
Date: Fri, 12 Oct 2012 23:33:14 GMT
Content-Type: application/json; charset=utf-8
Status: 200 OK
{
"access_token" : "fkjasdlfjoiwjefjwanlekfjhwalkfhal",
"token_type" : "bearer",
"scope" : "public"
}access_tokenの有効期限
access_tokenの有効期限はありません。
ユーザーがアプリケーションとの連携を解除するか、アプリケーションを削除するまで有効です。