2017年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

つぶやきTwitter

無料ブログはココログ

« テイルズ・オブ・デスティニー2クリア配信 | トップページ | 平成28年度 春期 情報セキュリティスペシャリスト試験 合格しました »

2015年9月12日 (土)

PHPでニフティクラウドmobile backendのシグネチャを生成するサンプル。(GETメソッド編)

PHPでニフティクラウドmobile backend(NCMB)のシグネチャを生成するサンプル。(GETメソッド編)

REST API リファレンス:シグネチャの生成方法(http://mb.cloud.nifty.com/doc/current/rest/common/signature.html)を参照。

▲ 注意事項
※ 将来、APIの仕様が変更になる可能性があります。
※ 本記事は、APIバージョン"2013-09-01"について記載しています。
/* NIFTY Cloud mobile backend */
/* シグネチャ生成 PHPサンプル */
/* http://mb.cloud.nifty.com/doc/current/rest/common/signature.html */

// リクエストメソッド
$method = 'GET';

// FQDN
$fqdn = 'mb.api.cloud.nifty.com';

// リクエストするAPIのパス
$path = '/2013-09-01/classes/TestClass';

// クエリストリング
$hash['where'] = json_encode( array( "testKey" => "testValue" ));

// アプリケーションキー(NCMBのダッシュボードのアプリ設定より)
// X-NCMB-Application-Key にマッピング
$application_key_value  = '6145f91061916580c742f806bab67649d10f45920246ff459404c46f00ff3e56';
$application_key_name   = 'X-NCMB-Application-Key';
$application_key        = $application_key_name . '=' . $application_key_value;

// クライアントキー(NCMBのダッシュボードのアプリ設定より)
$client_key      = '1343d198b510a0315db1c03f3aa0e32418b7a743f8e4b47cbff670601345cf75';

// シグネチャメソッド
// SignatureMethod にマッピング
$signature_method_value = 'HmacSHA256';
$signature_method_name  = 'SignatureMethod';
$signature_method       = $signature_method_name . '=' . $signature_method_value;

// シグネチャバージョン
$signature_version_value = "2";
$signature_version_name  = "SignatureVersion";
$signature_version       = $signature_version_name . '=' . $signature_version_value;

// タイムスタンプ
// * PHPでミリ秒を取得する場合は、microtime関数を利用する
//$timestamp_value = date('Y\-m\-d\TH\:i\:s\.\0\0\0\Z', time()); // 動的に取得する場合
$timestamp_value = "2013-12-02T02:44:35.452Z"; // サンプルは固定値
$timestamp_name  = 'X-NCMB-Timestamp';
$timestamp       = $timestamp_name . '=' . $timestamp_value;

// それぞれの値を「&」で連結
// * シグネチャメソッド
// * シグネチャバージョン
// * アプリケーションキー
// * タイムスタンプ
// * クエリストリング(キーと値はURLエンコードする)
$header_string = $signature_method
    . '&' . $signature_version
    . '&' . $application_key
    . '&' . $timestamp
    . '&' . http_build_query( $hash );

// 署名用文字列 以下の4つを改行「\n」で連結
// * リクエストメソッド
// * FQDN
// * APIパス
// * 「&」で連結された文字列
$signature_string = $method
    . "\n" . $fqdn
    . "\n" . $path
    . "\n" . $header_string;

// 署名用文字列を元にシグネチャを生成
// * 署名用文字列をメッセージ、クライアントキーを秘密鍵としてHmacSHA256でエンコードし、
// * それをBase64でエンコード
// 作成されるシグネチャ「/mQAJJfMHx2XN9mPZ9bDWR9VIeftZ97ntzDIRw0MQ4M=」
$signature_name  = 'X-NCMB-Signature';
$signature_value = base64_encode( hash_hmac( "sha256", $signature_string, $client_key, true ));
echo $signature_value . "\n";


			

« テイルズ・オブ・デスティニー2クリア配信 | トップページ | 平成28年度 春期 情報セキュリティスペシャリスト試験 合格しました »

日記・コラム・つぶやき」カテゴリの記事

趣味」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/199028/62239143

この記事へのトラックバック一覧です: PHPでニフティクラウドmobile backendのシグネチャを生成するサンプル。(GETメソッド編):

« テイルズ・オブ・デスティニー2クリア配信 | トップページ | 平成28年度 春期 情報セキュリティスペシャリスト試験 合格しました »