tencent cloud

フィードバック

クライアントアップロード署名

最終更新日:2023-10-26 17:31:32

    クライアントでアップロードを開始する前に、アップロード操作中に実行する必要があるアップロード署名を、Appの署名配布サーバーに申請する必要があります。これによって、VODはクライアントにアップロードの権限が付与されているかを確認できます。

    署名の生成手順

    1. TencentCloud APIの取得
      サーバーAPIの呼び出しに必要なセキュリティ証明(SecretIdとSecretKey)を取得します。具体的な手順は次のとおりです。
      1. コンソールにログインし、【クラウドサービス】>【CAM】>【APIキー管理】を選択し、「APIキー管理」ページに進みます。
      2. Tencent Cloud APIキーを取得します。キーを作成していない場合は、【キーの作成】をクリックして、SecretIdとSecretKeyのペアを作成することができます。
    2. 平文文字列originalの結合
      URL QueryStringのフォーマット要件に従って、平文署名文字列originalを結合します。そのフォーマットは次のとおりです。
      secretId=[secretId]¤tTimeStamp=[currentTimeStamp]&expireTime=[expireTime]&random=[random]
      
    - 上記のoriginalにおける`[secretId]`、`[currentTimeStamp]`、`[expireTime]`、`[random]`は、特定のパラメータ値にご自身で置き換える必要があります。
    - originalには、`secretId`、`currentTimeStamp`、`expireTime`、`random`の4つの必須パラメータが含まれており、オプションのパラメータならいくつでも含めることができます。詳細については、[署名パラメータ](#p2) をご参照ください。
    - パラメータ値は、必ずUrlEncodeを行う必要があります。行わない場合、QueryStringの解析が失敗する恐れがあります。
    
    1. 平文文字列を最終的な署名に変換します(Javaコードの一部を例とします)

      1. 取得したSecretKeyを使用して、平文文字列originalをHMAC-SHA1 で暗号化し、signatureTmpを取得します。

             Mac mac = Mac.getInstance("HmacSHA1");
        SecretKeySpec secretKey = new SecretKeySpec(this.secretKey.getBytes("UTF-8"), mac.getAlgorithm());
        mac.init(secretKey);
        byte[] signatureTmp = mac.doFinal(original.getBytes("UTF-8"));
        
        

        signatureTmpは、UTF-8でエンコードされ、HMAC-SHA1で暗号化されたバイト配列です

      2. UTF-8を使用して平文文字列originalをバイト配列にエンコードし、次に配列をsignatureTmpでマージし、最後にマージされた結果をBase64 にエンコードして、次のような署名signatureを取得します。

        String signature = base64Encode(byteMerger(signatureTmp, original.getBytes("utf8")));
        

    byteMergerとbase64Encodeは、それぞれ配列のマージとBase64エンコードのメソッドです。詳細については、Java署名サンプルコード をご参照ください

    署名生成の例

    VODでは、参考と検証のために、署名生成サンプルコードと署名ツールも提供します。

    • クライアントからのアップロード - 署名生成サンプルコード

    • オンデマンドクライアントからのアップロード - 署名生成ツール

    • オンデマンドクライアントからのアップロード - 署名検証ツール

      署名パラメータの説明

      パラメータ名 記入必須 タイプ 説明
      secretId はい String Tencent Cloud APIキーのSecretId。取得方法については、クライアントからのアップロードガイド - Tencent Cloud APIキーの取得 をご参照ください。
      currentTimeStamp はい Integer 現在のUnixタイムスタンプ。
      expireTime はい Integer 署名の有効期限が切れたUnixタイムスタンプ。
      expireTime = currentTimeStamp + 署名の有効期間
      署名の有効期間の最大値は7776000、つまり90日です。
      random はい Integer 平文署名文字列を作成するためのパラメータ。10進数で、最大値はxxxxx(32ビットの符号なしのバイナリー最大値)です。
      classId いいえ Integer ビデオファイルのカテゴリー。デフォルトは0です。
      procedure いいえ String 後続のビデオタスク操作、すなわち、ビデオのアップロードが完了した後、タスクフロー操作が自動的に開始されます。このパラメータ値はタスクフローテンプレート名です。VODは、タスクフローテンプレートの作成 とテンプレートの命名をサポートします。
      taskPriority いいえ Integer 後続のビデオタスクの優先度(procedureが指定されている場合にのみ有効)。値の範囲は[-10,10]、デフォルトは0です。
      taskNotifyMode いいえ String タスクフロー状態の変更通知モード(procedureが指定されている場合にのみ有効)。
    • Finish:タスクフローが完全に実行された場合にのみ、イベント通知が開始されます。
    • Change:タスクフロー内の各サブタスクのステータスが変更された場合に限り、イベント通知が行われます。
    • None:タスクフローのコールバックは受け入れられません。
    • デフォルトはFinishです。
      sourceContext いいえ String ソースコンテキストは、ユーザーリクエスト情報を渡すために使用されます。アップロード完了コールバック は、このフィールドの値を返します。最大250文字を入力することが可能です。
      oneTimeValid いいえ Integer 署名がワンタイム署名かどうかについては、クライアントからのアップロードガイド - ワンタイム署名 をご参照ください。
      デフォルトは0で、ワンタイム署名が無効であることを表し、1はワンタイム署名が有効であることを表します。
      関連するエラーコードについては、ワンタイム署名の説明をご参照ください。
      vodSubAppId いいえ Integer サブアプリケーション ID。このパラメータを入力しない、0を入力した、またはTencent Cloud AppIdを入力した場合、操作するサブアプリケーションが「メインアプリケーション」となります。
      sessionContext いいえ String セッションコンテキストは、ユーザーリクエスト情報を渡すために使用されます。procedureパラメータが指定されている場合、タスクフロー状態の変更コールバック は、フィールド値を返します。最大1000文字を含めることができます。
      storageRegion いいえ String ストレージリージョンを指定します。コンソールでストレージリージョンを追加することができます。詳細については、アップロードストレージ設定 をご参照ください。このフィールドには、ストレージリージョンの英語の略称 を入力してください。

    ワンタイム署名の説明

    • ワンタイム署名を有効にした場合、署名サーバーは、ユーザーに配布される署名が毎回異なることを確認する必要があります(同じタイミングで配布される署名randomが繰り返されないようにするなど)。確認しない場合、署名重複によるエラーが発生します。
    • 署名エラーによってアップロードに失敗し、再試行する場合は、新しい署名を取得する必要があります。
    • AndroidおよびJava SDKが原因の署名エラーのエラーコードは1001です。
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)