ホーム > Web Access Analysis > PHPでNuSoapを使ってSiteCatalyst APIに接続する

PHPでNuSoapを使ってSiteCatalyst APIに接続する

2012 年 3 月 9 日 コメントをどうぞ コメント

Adobe SiteCatalystのAPI(AdminとかReporting)に繋ぐときに使える関数。
元はサンプルコードから抜き出したもの。

まずリクエストヘッダーを生成する関数。

function get_header($username, $secret){
    $nonce = md5(rand());
    $created = date("Y-m-d H:i:s");
    $combo_string = $nonce . $created . $secret;
    $sha1_string = sha1($combo_string);
    $password = base64_encode($sha1_string);
    $headers = '<wsse:Security SOAP-ENV:mustUnderstand="1">
       <wsse:UsernameToken wsu:Id="User">
       <wsse:Username>'.$username.'</wsse:Username>
       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">'.$password.'</wsse:Password>
       <wsse:Nonce>'.$nonce.'</wsse:Nonce>
       <wsu:Created>'.$created.'</wsu:Created>
      </wsse:UsernameToken>
     </wsse:Security>';
    return $headers;
}

それから、実際にAPIをコールして結果を返す関数。

function api_call($soap_func, $wsdl, $rsids, $username, $secret){
	$client = new nusoap_client($wsdl, TRUE);
	if($err = $client->getError()) {echo "ERROR:".$err."\n"; exit();}
	$result = $client->call(
                $soap_func,
                array("rsid_list" => $rsids),
                'http://omniture.com',
                '',
                get_header($username, $secret)
	);

	return $result;
}

使い方は簡単。
この2つの関数を読み込んで、以下の様にコールするだけ。

$username = "******";
$secret = "*****";
$rsids = array("RSID1","RSID2","RSID3","RSID4");
$result = api_call(
	'ReportSuite.GetSettings',
	'omniture_wsdl_sj.xml',
	$rsids,
	$username,
	$secret
);
var_dump($result);

この例では、複数のReportSuite IDについて、レポートスイートの設定内容が返って来る。
Dr.Hの自動SDRとかはこれで動いている。

緑のイタリックは変えてね。
$usernameと$secretは管理コンソールで取得したウェブサービス用ユーザー情報。api_callの第一引数がコマンド。

ご利用は計画的に自己責任で。

カテゴリー: Web Access Analysis
  1. コメントはまだありません。
  1. トラックバックはまだありません。