OAuth2.0(API認可方式)とはセキュアなAPI認可 (authorization) の標準的な手段です。
※詳細については以下URLをご覧ください。
http://tools.ietf.org/html/draft-ietf-oauth-v2-15
1. Authorization Codeリクエスト
最初に、Webブラウザを利用して、エンドユーザの Authorization Code を取得します。 以下のURLをエンドユーザにリクエストさせてください。エンドユーザは、 アクセスを認可するかしないかを選択する画面にリダイレクトされます。
エンドユーザにより承認がされると、 redirect_uri で指定したページへ code というパラメータ付きでリダイレクトされます。
※詳細については以下URLをご覧ください。
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-4.1.1
※“状態”を表すパラメータをサポートしていません。こうしたパラメータが必要な場合は、redirect_uriに含めてください。
Method
POST/GET
URL
https://app.rakuten.co.jp/services/authorize
Parameter
response_type=code
client_id=[application_id]
redirect_uri=[your site]
scope=[scope]
リクエスト例
https://app.rakuten.co.jp/services/authorize?
response_type=code&
client_id=rakuten123&
scope=rakuten_favoritebookmark_read&
redirect_uri=http%3a%2f%2fwww%2erakuten%2eco%2ejp%2f
-
- client_id: 自分のアプリのapplication_idが "rakuten123" の場合は "rakuten123" を指定してください
- redirect_uri: リダイレクトさせたいURIが "http://www.rakuten.co.jp" の場合はUTF8でエンコードした "http://www.rakuten.co.jp" を指定してください。また、URIドメインは、アプリ作成時に指定した "コールバック許可ドメイン" と同じドメインのURIを指定してください
- scope: 楽天お気に入りブックマーク取得APIを使用する場合は"rakuten_favoritebookmark_read"を指定してください
2. Access Tokenリクエスト
続いて、アプリでは、 1.Authorization Codeリクエスト で取得した code を利用して、 APIのリクエストに必要な、 access_token をサーバー間通信でリクエストします。
※詳細については以下URLをご覧ください。
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-4.1.3
※“状態”を表すパラメータをサポートしていません。こうしたパラメータが必要な場合は、redirect_uriに含めてください。
Method
POST
URL
https://app.rakuten.co.jp/services/token
Parameter
grant_type=authorization_code
client_id=[application_id]
client_secret=[application_secret]
code=[code]
redirect_uri=[your site]
リクエスト例
https://app.rakuten.co.jp/services/token?
grant_type=authorization_code&
client_id=rakuten123&
client_secret=rakuten456&
code=[code]&
scope=rakuten_favoritebookmark_read&
redirect_uri=http%3a%2f%2fwww%2erakuten%2eco%2ejp%2f
-
- client_id: 自分のアプリの application_id が"rakuten123"の場合は"rakuten123"を指定してください
- client_secret: 自分のアプリの application_secret が"rakuten456" の場合は "rakuten456" を指定してください。 なお、application_secret は絶対に他人に知られないようにしてください。誤って知られてしまった場合は Secretの再生成 をしてください
- redirect_uri: 1. Authorization Code リクエスト で指定したものと同じものを指定してください。
- code: 1.Authorization Codeリクエスト により取得した code を指定してください
Response
リクエストが正常に処理されると、HTTP ステータスコードが200 の以下のような JSON がレスポンスされます。
フィールド名 | 説明 |
---|---|
access_token | APIにアクセスする際に利用するトークンです。 |
refresh_token | OAuth2 におけるアクセストークンのリフレッシュに利用するものです。現在は利用できません。 |
expires_in | アクセストークンが利用できる、残り時間 (秒) です。 |
scope | access_token によりアクセスできる、スコープです。 |
レスポンス例
{
"access_token":"P5se6bF2oy26vGjQWu3JBmKdmm1wzOOXxY7mqs1cp4c",
"refresh_token":"GWQGT_9VNbDxFhHz2v-TNvN7pd4slEqJhseV6x351qw",
"token_type":"BEARER",
"expires_in":299,
"scope":"rakuten_favoritebookmark_update"
}
Error
リクエストが正常に処理されなかった場合、以下のような HTTPステータスコードと、 JSON がレスポンスされます。
HTTPステータスコード | JSON error フィールド | 説明 |
---|---|---|
400 | invalid_client | client_id や client_secret に誤りがある場合 |
400 | invalid_request | code に誤りがある場合 |
500 | system_error | システムエラー |
503 | service_unavailable | メンテナンス |
エラー例
{
"error":"invalid_request",
"error_description": "invalid code"
}
3. API利用
2.Access Tokenリクエスト で取得した access_token で、APIにリクエストが可能になります。 詳細は各APIのページをご覧ください。 現在(2012年9月)、アクセストークンの有効期限は、5分間となっています。