BASE APIの使い方・商品データの取り出し方を解説する【PHPコード付き】

みやしも プログラミング

『BASE(ベイス)』は誰でもネットショップが作れる便利なサービスですが、そんなBASEの商品データを他のサイトで利用するには『BASE API』を利用して商品データを取り出す必要があります。



BASE Developers



そこで今回は、『BASE API』を使った商品データの取り出し方を、実際のPHPコードのもとに解説してゆきます。



▼この記事はこんな方向き

  • BASEの商品情報を他のサイトにも掲載したい
  • BASE APIを利用した実際のPHPコードが知りたい
なるべく少ない手順で商品データが取り寄せられるPHPコードを作成しました。

BASE APIを利用するには『BASE(ベイス)』のアカウントが必要になります。



▼この記事を書いたひと

フリーランスのみやしも(@miyashimo_eng)です。プログラミングや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ファイルにコピペしてサーバーに設置すれば利用できます。
PHPコードの詳しい内容や使い方について、続けて解説してゆきます!

PHPコードの解説

『BASE API』を経由して自分のショップの商品データを取得するPHPコードになります。このPHPコードでは、自分のショップの商品データを格納するJSONデータの出力までを扱います。

BASEAPI利用イメージ.png
PHPコードの利用イメージ

解説①:認証処理について

PHPコードの冒頭で行っている認証処理について解説してゆきます。



BASE APIを利用するには、ユーザーがログインしたことを示す『①認可コード』と、ユーザーの識別情報となる『②アクセストークン』が必要になり、このためにもBASEへの認証を行う必要があります。


コードから認証を行うにはBASEのログイン画面で認証する、Oauth2.0を介するといった方法で取得できますが、 BASE APIの仕様上、以下の点に注意する必要があります。
①認可コード、②アクセストークンには有効期限があり①認可コードは有効期限不明②アクセストークンの有効期限は1時間程度となっている。

認証の有効期限が短いために、プログラムからBASEを利用する際には注意が必要となります。このためにも今回のPHPコードでは、有効期限切れが原因でエラーにならないよう以下の流れで認証を行う様にしています。



▼認証処理の流れ

  1. URLパラメーターに『①認可コード』が無ければBASEログイン画面にリダイレクト

  2. BASEログイン後に『①認可コード』付きのURLで元のプログラムにリダイレクト

  3. 『①認可コード』からアクセストークンを発行して処理を続行する



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』の仕様上、1回のコールにつき最大100件まで商品データが取得できます。今回のPHPコードでは、最大の100件まで取得する様にしています。

▼参考情報

- BASE API ドキュメント(GET /1/items)

https://docs.thebase.in/docs/api/items/

解説③:データの保存処理について

最後に『BASE API』から取得した情報を保存します。

BASE APIのレスポンスはJSON形式で返ってくる仕様です。上記のPHPコードでは、受け取ったレスポンスを『itemdata.json』というファイルにそのまま保存しています。
以上でPHPコードの解説は終わりです!

PHPコードの使い方

それでは今回のPHPコードの使い方を解説してゆきます。

利用の前提条件

PHPコードを利用するには、前提としてBASEのアカウントが必要になります。アカウントを持っていない場合は、あらかじめ作成しておく様にしましょう。



BASE公式サイト

使い方①:PHPファイルの設置

まずはPHPファイルの設置から行います。上記のコードのPHPファイルを作成して、サーバー上のドキュメントルート配下にアップロードすれば設置できます。



例)プログラムの設置例

▼プログラム設置場所
/base/baseapi.php

▼参照URL
https://example.com/base/baseapi.php
PHPの実行結果としてJSONファイルが出力されるので、ディレクトリ内に設置するのが良いと思います!

使い方②:BASE APIの設定

続けてBASE APIの設定を行います。BASE Developersのページにログインして、『BASE API』のアプリ設定を行いましょう。(※アプリ作成が済んでいない場合は新しく作成します)



▼BASE Developersはこちら

https://developers.thebase.in/

BASEAPIアプリ設定.png
使い方②:BASE APIの設定

BASE Developersにおける設定内容はつぎの通りです。



▼設定内容

クライアントID 登録したアプリに認証するための情報です
クライアントシークレット 登録したアプリに認証するための情報です
アプリURL プログラムを利用するサイトURLを指定します
コールバックURL

BASE認証後のリダイレクト先となるURLを指定します。今回のプログラムでは、認証後に元にいた場所に戻る必要がありますので『コールバックURL』にはプログラムのURLを指定します。


例)https://example.com/base/baseapi.php

利用権限 ここは『ユーザー情報を見る』『商品情報を見る』の権限が設定されていればOKです
『クライアントID』『クライアントシークレット』『コールバックURL』の値は、PHPコード内に記述する情報ですので値を控えておきましょう。

使い方③:PHPコードの設定

最後にサーバーに設置したPHPコードの設定を行います。



先ほどのBASE APIアプリの設定で取得した『①クライアントID』『②クライアントシークレット』『③リダイレクトURL』の値を、コード内の以下に置きかえます。

プログラム上書き換える箇所.png
使い方③:PHPコードの設定
以上でプログラムの設定は完了になります。

プログラムを実行する

最後にプログラムの動作確認を行います。先の手順でサーバー上に設置したファイルのURLをWEBブラウザで開きましょう。

例)https://example.com/base/baseapi.php

ブラウザで開くと、まずはBASEのログイン画面が出てくるので『メールアドレス』『パスワード』を入力して認証を行います。

実行イメージ1.png
プログラムを実行する①

BASEへのログインができたら元のプログラムに再度リダイレクトして、残りの処理が行われます。

プログラム完了後にPHPファイルを置いた同じ階層にJSONファイル「itemdata.json」が作成されていれば成功です。
実行イメージ2.png
プログラムを実行する②
あとはサイト上でJSONデータを必要に応じて使ってゆけば良いと思います!

以上でプログラムの動作確認の解説は終わりです。

この記事のまとめ

実際のPHPコードを通して、BASE APIから自分のネットショップの商品データを取り出す方法について解説してゆきました。

WEBサイトで商品一覧を作るなど、使える場面は多いとも思います!

今回は以上となります。最後までお読みいただきありがとうございました。

関連記事

最新記事