【目次】
・アプリケーション登録
・認証ページ表示
・認可コードを取得
・アクセストークン取得
・API情報の呼び出し
・サンプルコード
設定方法
API連携の設定です。
アプリケーション登録
基本設定>外部アプリ連携
アシスト店長とのAPI連携についてはこちら
項目 | 内容 |
---|---|
アプリケーション名 | 任意でアプリケーション名を設定してください。 |
リダイレクトURL | リダイレクトURLを設定してください。 リダイレクトURLには認証情報を受け取るURLを指定してください。 |
IP制限 | 許可するIPアドレスを設定してください。 未設定の場合は無制限で許可します。 |
クライアントID | 新規登録時は空欄で登録してください。 登録すると発行されます。 |
シークレットID | 新規登録時は空欄で登録してください。 登録すると発行されます。 |
認証ページ表示
https://{ドメイン名}/api/oauth/authorize.php に、必要なパラメータをつけてGETリクエストを行ってください。
アカウントの認証を行うHTMLページが表示されます。
パラメータ名 | 有効な値 |
---|---|
client_id | アプリケーション詳細画面で確認できるクライアントID |
response_type | “code”を指定 |
redirect_uri | アプリケーション登録時に入力したリダイレクトURLと同一のものを指定 |
state | 任意の文字列 |
scope | 予約パラメータです。現在は指定できません。 アプリケーションが利用したい機能をスペース区切りで指定します。 “read_products” = 商品データを参照 “write_products” = 在庫データを更新 “read_sales” = 受注・顧客データを参照 “write_sales” = 受注データを更新 |
(例) https://{楽楽B2Bドメイン名}/api/oauth/authorize.php?client_id=CLIENT_ID&redirect_uri=REDIRECT_URL&response_type=code&state=a397aabc602f7e296db23b0717edd1fda06c345f
- URLにアクセスすると、認可ページが表示されます。
- 楽楽BBCアカウントを持つ利用者は、このページでアプリケーションがショップのデータにアクセスることを許可します。
- はじめて許可ページへ訪れる利用者は、楽楽BBCの管理者ログインID・パスワードの入力を求められます。
認可コードを取得
リダイレクトURLに指定したURLで許可コードが取得できます。
例)
https://{御社ツールドメイン名}/getAuth.php?code=xxxxxxxxx&state=zzzzzzzzz
codeの値が認可コードになります。
アクセストークン取得
認可コードを利用してアクセストークンを取得します。
https://{楽楽BBCドメイン名}/api/oauth/token.php に対してPOSTリクエストを行います。
リクエストパラメータ
パラメータ名 | 有効な値 |
---|---|
client_id | アプリケーション詳細画面で確認できるクライアントID |
client_secret | アプリケーション詳細画面に表示されているシークレット文字列 |
code | 取得した認可コード文字列 |
grant_type | “client_credentials”を指定 |
レスポンスデータ
パラメータ名 | 有効な値 |
---|---|
access_token | アクセストークン |
expires_in | 有効期限 |
refresh_token | リフレッシュトークン |
リクエストが成功すると、以下のようなレスポンスがJSONで返ります。
{"access_token":"d461ab8XXXXXXXXXXXXXXXXXXXXXXXXX","token_type":"beare r","expires_in":null,"refresh_token":null,"scope":""}
access_tokenプロパティに格納されている値が、アクセストークンです。
アクセストークンを取得すれば、楽楽BBCAPIにアクセスする準備は完了です。
- 認可コードをアクセストークンに交換できるのは1度だけです。
- アプリケーション側で保存できるようにしてください。
- アクセストークンは、許可済みアプリケーション一覧画面から失効させることができます。
API情報の呼び出し
- アクセストークンつきでHTTPリクエストを行うことで、楽楽BBCAPIにアクセスすることができます。
- リクエスト、レスポンス、どちらもJSONでやりとりを行います。
- 各APIは、URLとHTTPメソッドで操作を表します。
・GET参照
・POST新規登録
・PUT更新
・DELETE削除
- POST,PUTの際には、ヘッダに Content-Type: application/json をつけ、リクエストボディにJSONを送信します。
- リクエストボディのJSONに日本語が含まれる場合は文字コードはUTF-8、\uNNNN形式でエンコードされている必要があります。
- Authorizationヘッダに以下の形式でアクセストークンを付与し、各APIへのリクエストを行います。
Authorization: Bearer 0908dXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
サンプルコード
※以下はサンプルです。URLやパラメータは便宜修正してください。
アプリケーションのWebサーバのサンプル
<?php define("OAUTH2_SITE", 'https://{楽楽BBCドメイン}'); define("OAUTH2_CLIENT_ID",'XXXXX'); // クライアントIDを入力します。 define("OAUTH2_CLIENT_SECRET", 'XXXXX'); // クライアントシークレットを入力します。 define("OAUTH2_REDIRECT_URI", 'http://example.com/index.php'); $code = $_GET['code']; $state = sha1(uniqid(mt_rand(), true)); //任意の文字列をセット。 // 認可ページへリダイレクトする if (empty($code)) { $params = array( 'client_id' => OAUTH2_CLIENT_ID, 'redirect_uri' => OAUTH2_REDIRECT_URI, 'response_type' => 'code', 'state' => $state ); $auth_url = OAUTH2_SITE . '/api/oauth/authorize.php?' . http_build_query($params); header('Location: ' . $auth_url); exit; } // 認可後 $params = array( 'client_id' => OAUTH2_CLIENT_ID, 'client_secret' => OAUTH2_CLIENT_SECRET, 'code' => $code, 'grant_type' => 'client_credentials', 'redirect_uri' => OAUTH2_REDIRECT_URI ); $request_options = array( 'http' => array( 'method' => 'POST', 'content' => http_build_query($params) ) ); $context = stream_context_create($request_options); $token_url = OAUTH2_SITE . '/api/oauth/token.php'; $response_body = file_get_contents($token_url, false, $context); $response_json = json_decode($response_body);
アクセストークンを用いたPUTリクエストのサンプル
<?php
$arrParam = array();
$arrParam['serial_order_id'] = '5'
$api_url = 'https://{楽楽BBCドメイン}/api/v1/orders.php?' . http_build_query($arrParam);
$api = new HTTP_Request($api_url, $option);
// POSTで送信
$api->setMethod(HTTP_REQUEST_METHOD_GET);
// Header設定
$api->addHeader('Authorization', "Bearer {アクセストークン}");
// HTTPリクエスト実行
$response_api = $api->sendRequest();
$status_code = $api->getResponseCode();
$response_body_api = $api->getResponseBody();
$response_body_api = json_decode($response_body_api);
?>