BASE APIの使い方・商品データの取り出し方を解説する【PHPコード付き】
『BASE(ベイス)』は誰でもネットショップが作れる便利なサービスですが、そんなBASEの商品データを他のサイトで利用するには『BASE API』を利用して商品データを取り出す必要があります。
そこで今回は、『BASE API』を使った商品データの取り出し方を、実際のPHPコードのもとに解説してゆきます。
▼この記事はこんな方向き
- BASEの商品情報を他のサイトにも掲載したい
- BASE APIを利用した実際のPHPコードが知りたい
BASE APIを利用するには『BASE(ベイス)』のアカウントが必要になります。
▼この記事を書いたひと
フリーランスみやしも(@miyashimo_blog)です。プログラミングやWebサイト制作に関するITの情報を幅広くお届けしていきます。
PHPコードの紹介【BASEの商品データを取り出す】
それでは解説を始めてゆきます。結論としては次のようなコードを使えば、BASEで作成したショップの商品データを取り出す事ができます。
▼BASEの商品データを取り出すPHPコード
/*
* BASE API の商品情報を更新する
*
*/
define("CLIANT_ID", "【クライアントID】");
define("CLIENT_SECRET", "【クライアントシークレット】");
define("REDIRECT_URL", "【リダイレクトURL】");
// 1.認証処理
//-----------------------------------
// 「認可コード」を取得する
$code = null;
if(isset($_GET['code']) && !empty($_GET['code'])){
$code = $_GET['code'];
}else{
// 認可コードが無ければBASE側のログイン画面にリダイレクト
$auth_url = '';
$auth_url .= 'https://api.thebase.in/1/oauth/authorize';
$auth_url .= '?response_type=code';
$auth_url .= '&client_id='.CLIANT_ID;
$auth_url .= '&redirect_uri='.REDIRECT_URL;
$auth_url .= '&scope=read_items';
header('Location:'.$auth_url);
exit;
}
// 「アクセストークン」を取得する
$params = array(
'client_id' => CLIANT_ID,
'client_secret' => CLIENT_SECRET,
'code' => $code,
'grant_type' => 'authorization_code',
'redirect_uri' => REDIRECT_URL,
);
$headers = array(
'Content-Type: application/x-www-form-urlencoded',
);
$request_options = array(
'http' => array(
'ignore_errors' => true,
'method' => 'POST',
'content' => http_build_query($params),
'header' => implode("\r\n", $headers),
),
);
$context = stream_context_create($request_options);
$response = file_get_contents('https://api.thebase.in/1/oauth/token', false, $context);
$response_array = json_decode($response,true);
// エラーがあれば表示して終了
if(isset($response_array['error']) && isset($response_array['error_description'])){
echo $response_array['error_description'];
exit;
}
// 2.商品情報を取得
//-----------------------------------
$headers = array(
'Authorization: Bearer ' . $response_array['access_token'],
);
$request_options = array(
'http' => array(
'ignore_errors' => true,
'method' => 'GET',
'header' => implode("\r\n", $headers),
),
);
$context = stream_context_create($request_options);
$response = file_get_contents('https://api.thebase.in/1/items?limit=100&offset=0', false, $context);
$response_array = json_decode($response,true);
// エラーがあれば表示して終了
if(isset($response_array['error']) && isset($response_array['error_description'])){
echo $response_array['error_description'];
exit;
}
// 3.データを保存する
//-----------------------------------
file_put_contents('./itemdata.json',$response);
PHPコードの解説
『BASE API』を経由して自分のショップの商品データを取得するPHPコードになります。このPHPコードでは、自分のショップの商品データを格納するJSONデータの出力までを扱います。
解説①:認証処理について
PHPコードの冒頭で行っている認証処理について解説してゆきます。
コードから認証を行うにはBASEのログイン画面で認証する、Oauth2.0を介するといった方法で取得できますが、 BASE APIの仕様上、以下の点に注意する必要があります。
認証の有効期限が短いために、プログラムからBASEを利用する際には注意が必要となります。このためにも今回のPHPコードでは、有効期限切れが原因でエラーにならないよう以下の流れで認証を行う様にしています。
▼認証処理の流れ
-
URLパラメーターに『①認可コード』が無ければBASEログイン画面にリダイレクト
-
BASEログイン後に『①認可コード』付きのURLで元のプログラムにリダイレクト
-
『①認可コード』からアクセストークンを発行して処理を続行する
PHPコードの作り上、実行の度にBASEのログイン画面で認証する必要がありますが、認証の有効期限を気にせず確実に実行することが可能です。BASE APIの認証に関する情報には次のページが参考になります。
▼参考情報
- BASE API ドキュメント(oauth/authorize)
https://docs.thebase.in/docs/api/oauth/authorize
- BASE API ドキュメント (oauth/access_token)
https://docs.thebase.in/docs/api/oauth/access_token
解説②:BASE APIの商品検索について
BASEへの認証が終わったら、認証したユーザーのショップを検索して商品データを取得します。検索はBASE APIで行いますが、この際には先の認証で取得した『アクセストークン』を使用します。
▼参考情報
- BASE API ドキュメント(GET /1/items)
https://docs.thebase.in/docs/api/items/
解説③:データの保存処理について
最後に『BASE API』から取得した情報を保存します。
PHPコードの使い方
それでは今回のPHPコードの使い方を解説してゆきます。
利用の前提条件
PHPコードを利用するには、前提としてBASEのアカウントが必要になります。アカウントを持っていない場合は、あらかじめ作成しておく様にしましょう。
使い方①:PHPファイルの設置
まずはPHPファイルの設置から行います。上記のコードのPHPファイルを作成して、サーバー上のドキュメントルート配下にアップロードすれば設置できます。
例)プログラムの設置例
使い方②:BASE APIの設定
続けてBASE APIの設定を行います。BASE Developersのページにログインして、『BASE API』のアプリ設定を行いましょう。(※アプリ作成が済んでいない場合は新しく作成します)
▼BASE Developersはこちら
https://developers.thebase.in/
BASE Developersにおける設定内容はつぎの通りです。
▼設定内容
クライアントID | 登録したアプリに認証するための情報です |
---|---|
クライアントシークレット | 登録したアプリに認証するための情報です |
アプリURL | プログラムを利用するサイトURLを指定します |
コールバックURL |
BASE認証後のリダイレクト先となるURLを指定します。今回のプログラムでは、認証後に元にいた場所に戻る必要がありますので『コールバックURL』にはプログラムのURLを指定します。
|
利用権限 | ここは『ユーザー情報を見る』『商品情報を見る』の権限が設定されていればOKです |
使い方③:PHPコードの設定
最後にサーバーに設置したPHPコードの設定を行います。
先ほどのBASE APIアプリの設定で取得した『①クライアントID』『②クライアントシークレット』『③リダイレクトURL』の値を、コード内の以下に置きかえます。
プログラムを実行する
最後にプログラムの動作確認を行います。先の手順でサーバー上に設置したファイルのURLをWEBブラウザで開きましょう。
ブラウザで開くと、まずはBASEのログイン画面が出てくるので『メールアドレス』『パスワード』を入力して認証を行います。
BASEへのログインができたら元のプログラムに再度リダイレクトして、残りの処理が行われます。
以上でプログラムの動作確認の解説は終わりです。
この記事のまとめ
実際のPHPコードを通して、BASE APIから自分のネットショップの商品データを取り出す方法について解説してゆきました。
今回は以上となります。最後までお読みいただきありがとうございました。