3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Adobe AnalyticsのReporting APIを使うシンプルなPHPコード

Posted at

目的

Adobe AnalyticsがMarketing Cloudに統合され、API接続の認証の仕組みが少し変わったりしていて、過去のサンプルコードを使い回せなくなってきた。
なので、Marketing Cloudに接続されたAnalyticsを前提とした、Reporting API v1.4に接続するシンプルな方法のメモを残しておく。

API接続の流れ(Client Credentialを利用したOAuthの場合)

1.Application IDとApplication Secretを用いてTokenを取得する
2.各種リクエストを実行する際に、Tokenを併せて送る
3.リクエストの結果の戻り値を処理

大前提

  • Adobe Marketing CloudとAdobe Analyticsが紐づけられている
  • Adobe Developer ConnectionにAdobe ID(Marketing Cloudで使っているもの)でログインしている
  • Marketing CloudやAnalyticsでAPIの利用権限が付与されている

事前準備

  • Marketing CloudでAPIに接続するアプリケーションの利用登録をする → Create an Application
  • 発行されたApplication IDとApplication Secretをメモする

#具体的なコード
複雑なことはせずに、Token取得と各種APIコール実行の2つの関数を用意してみた。

api_call.php
// 諸設定
define("APP_ID", "1234567890-test-app"); // Application ID
define("APP_SEC", "abc123def456ghi789"); // Application Secret
define("ENDPOINT", "https://api.omniture.com");
// エンドポイントはデータセンターによって異なる(San Joseはapi.、Dallasはapi2.、Singaporeはapi4.…

// Tokenを取得する関数(直接は使わない):/tokenにベーシック認証でアクセスする
function getToken(){
    $ch = curl_init(ENDPOINT."/token");
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_USERPWD, APP_ID.":".APP_SEC);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array("grant_type" => "client_credentials")));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = json_decode(curl_exec($ch));
    curl_close($ch);
    return $response->access_token;
}

// APIコールを実行する関数:method(Report.Queueとか)と渡すパラメータの配列を引数にして、結果をjsonデコードして返す
function execRequest($method,$request_param){
    $token = getToken();
    $ch = curl_init(ENDPOINT."/admin/1.4/rest/?method=".$method."&access_token=".$token);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($request_param));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = json_decode(curl_exec($ch));
    curl_close($ch);
    return $response;
}

// では実際に使ってみる…

// パラメータを定義(入れ子がトリッキーなのでドキュメントをよく読むこと)
$request_param = array(
    "reportDescription" => array(
        "reportSuiteID" => "YOUR_REPORTSUITE_ID"
    )
);

// execRequest関数に、第一引数にmethod、第二引数に↑で定義したパラメータを指定
$report_id = execRequest("Report.Queue",$request_param);

// 結果を出力(Report.Queueなので、レポートIDが返ってくる)
var_dump($report_id);

Enjoy!

何かトラブっても知りません

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?