AdobeAnalytics ReportAPIの使い方メモ

#adobeのページを見ながら試してみたメモ

###まずは概要

この辺を参考に。
https://marketing.adobe.com/developer/documentation/analytics-reporting-1-4/get-started
https://marketing.adobe.com/developer/get-started/enterprise-api/c-enterprise-api

https://marketing.adobe.com/developer/ja/~ にいけば日本語版が置いてあるけども、最新版ではないらしく、少し書いてある内容が違うよう。


###使い方
①　Report.Queueでレポート作成を命令。レポートIDを受け取る。
②　Report.GetでレポートIDを渡して、結果を取得（作成中の場合はnotReadyが返ってくる）
③　Report.Getで結果を取得（レポートが出来上がって入れば、結果が返ってくる）

###ぺスプラ
・数秒に1回くらいチェックすべし（毎秒1回以上チェックしてくれるな。）
・キューは並列で投げてもOK

###エンドポイント
・RESTの場合はこんな感じ
https://api4.omniture.com/admin/1.4/rest/?method=Report.Queue
・地域によってエンドポイントは異なるので、定期的にチェックした方がいいらしい。（Company.GetEndpointでチェック）
・とりあえず試したところ、なぜかシンガポール、太平洋北西地域どちらでも叩けた。

###準備が必要なもの
・ユーザー名　→　管理者に作ってもらう。
・暗号鍵　→　管理者に作ってもらう。
・Web Service Accessへのアクセス権　→　管理者に付与してもらう。
・rsid（レポートスイートID）　→　管理者に聞く。

###レポートスイートIDの確認方法
・上記の通り、管理者にanalyticsの管理コンソールから確認してもらう。
・もしくは、s_code.jsのs_accountに設定している値から確認も可能。

###叩いてみる（REST 1.4）

ここで試せる
https://marketing.adobe.com/developer/api-explorer
・エンドポイント取得（この時はエンドポイントが不明なので api.omniture.com に向けて叩く）
![image](https://qiita-image-store.s3.amazonaws.com/0/141758/f7e0280d-5f4c-7071-4ca7-9cf3944a5d13.png)

・送信内容と結果（***は置き換え。）
![image](https://qiita-image-store.s3.amazonaws.com/0/141758/e5b65319-de6c-52d3-6b07-03c50de03c51.png)
https://api4.omniture.com/admin/1.4/rest/
が正解らしい。

・エンドポイントを今確認した場所（今回はSingapore）に設定してReport.Queueをたたく
![image](https://qiita-image-store.s3.amazonaws.com/0/141758/2b94f7bd-5278-d292-dcc9-cf3a7886a605.png)

・送信内容と結果（***と999は置き換え。）
https://marketing.adobe.com/developer/documentation/analytics-reporting-1-4/get-started
を参考に、Ranked Report を試してみる
![image](https://qiita-image-store.s3.amazonaws.com/0/141758/59dc39f9-fc16-ce96-c1bb-2a77f9092ae2.png)

・レポートを取得
![image](https://qiita-image-store.s3.amazonaws.com/0/141758/02b221da-7f2a-e814-dd00-410e74493e44.png)


・送信内容と結果（ここもid的なものは適宜置き換えて）
reportIDには先ほど返ってきた値をセット。
![image](https://qiita-image-store.s3.amazonaws.com/0/141758/9b12639f-e057-0546-b718-e15e0a7b9e93.png)
ページの閲覧ランキングが配列で返ってくる。あとは好きに加工すればOK。

###最後に、Report.Queueの部分だけPHPで書いてみたので載せておく

※こちらのサイトを参考にさせて頂きました。
http://d.hatena.ne.jp/i_ogi/20100214/wsse
http://d.hatena.ne.jp/ryster/20070907/1189148449

    <?php
    $url = 'https://api4.omniture.com/admin/1.4/rest/?method=Report.Queue';
    $user_name = "**********";
    $password = "**********";
    
    $data = array(
            'reportDescription' => array(
                            'reportSuiteID' => '**********',
                            'elements' => array( array(
                                     'id' => 'page'
                           ))
            )
    );
    
    $data_json = json_encode($data);
    
    $nonce = md5(mt_rand());
    $created = date(DATE_ISO8601);
    
    $x_wsse = sprintf('UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"',
              $user_name,
              base64_encode(sha1($nonce . $created . $password, true)),
              base64_encode($nonce),
              $created);
    $context = stream_context_create(
                 array(
                     'http' => array(
                         'method' => "POST",
                         'header' => "X-WSSE: $x_wsse",
                         'content' => $data_json
                     )
                 )
    );
    
    echo file_get_contents($url, 0, $context);
    ?>

・細かい条件指定などはまた今度確認。
・バージョン1.4からOAuth2に対応してるとのことで、WSSEよりもそっちを使いたい。