署名の生成

ユーザーがアップロードしたビデオを安全に整理するために、静的なlabel、および(または)正規表現のdynamicパラメータを宣言できます。

APIクエリーはアカウントのセキュリティを確実に保護するために、署名を必要とします。署名付きAPIリクエストを生成するサンプルを各手順でご紹介します。この例で生成されたクエリーは有効で、認定リクエストを構成、署名 する方法を説明しています。署名について詳細に説明したサンプルをご利用いただけます。

プロバイダーID(pcode)およびシークレット(secret)のアカウント固有コードはデベロッパーセクションのBacklotアカウントタブにあります。pcodeはは28文字、シークレットコードは48文字です。 どちらのコードも大文字と小文字を区別し、英数字、ダッシュ(-)、アンダーライン(_)が含まれます。これらのコードはOoyalaサーバーとの各リクエストのやり取りする際の署名の生成で必要になります。

例:

Partner Code: lsNTrbQBqCQbH-VA6ALCshAHLWrV
Secret Code: hn-Rw2ZH-YwllUYkklL5Zo_7lWJVkrbShZPb5CD1

      
Note: これらのパラメータは予備テストのためにあらゆる BacklotパートナーにAPI経由でアクセス出来る共有アカウントを指し示しています。 このアカウントにアップロードされたコンテンツおよびメタデータはすべてのユーザーが閲覧可能です。

pcode、シークレットコード、必須パラメータおよび該当するすべての任意 パラメータはコールのためのSHA-256署名の生成に使用されます。下の例は署名の生成方法と、コールするためにパラメータをURIエンコードする方法を示しています。

  1. Backlotアカウントタブのデベロッパーエリアにある40文字のシークレットコードで始めます。 hn-Rw2ZH-YwllUYkklL5Zo_7lWJVkrbShZPb5CD1
  2. パラメータ名をアルファベット順にソートし、<name>=<value>ペアを文字列に追加します。 SHA-256署名は結果によって生成され、pcodeは含まれません。この例はexpires=1893013926, dynamic[any]=^/any/ano, dynamic[some]=^/any/some$, label[0]=/bysmthng/qqq, label[a]=/byuser/u1,status=pendingを使用しています。 hn-Rw2ZH-YwllUYkklL5Zo_7lWJVkrbShZPb5CD1dynamic[any]=^/any/anodynamic[some]=^/any/some$expires=1893013926label[0]=/bysmthng/qqqlabel[a]=/byuser/u1status=pending
  3. この文字列でBase64形式のSHA-256ダイジェストを生成し、文字列を43文字に切り捨て、後端のすべての '='記号を取り除きます。 署名、特に'+'、'='、'/'をURIエンコードします。 この例は次の 署名を作り出します。 mNkdZprvtjKtve5EGLop3ZFszwrquOyBcxQrR+x38u8
  4. setParameters()に渡す文字列に上で生成した署名をURIエンコードして組み込みます。この例では、次のようになります。

    var paramStr = 'pcode=lsNTrbQBqCQbH-VA6ALCshAHLWrV&status=pending&expires=1893013926&label[a]=/byuser/u1&
    label[0]=/bysmthng/qqq&dynamic[some]=^/any/some$&dynamic[any]=^/any/ano&
    signature=mNkdZprvtjKtve5EGLop3ZFszwrquOyBcxQrR+x38u8';
    

    +’と’/’のような特殊文字はこの文字列でURIエスケープします。パラメータ文字列をURIエスケープする2種類の容易な方法をご紹介します。

    // First, using JavaScript Object properties:
    var paramStr =
      {
        'pcode':'lsNTrbQBqCQbH-VA6ALCshAHLWrV',
        'status':'pending',
        'expires':'1893013926',
        'label[a]':'/byuser/u1',
        'label[0]':'/bysmthng/qqq',
        'dynamic[some]':'^/any/some$',
        'dynamic[any]':'^/any/ano',
        'signature':'mNkdZprvtjKtve5EGLop3ZFszwrquOyBcxQrR+x38u8'
      };
    

    または

    // Second, using array of objects with 'name' and 'value'
    // properties:
    var paramStr =
    [
      { name:'pcode', value:'lsNTrbQBqCQbH-VA6ALCshAHLWrV'},
      { name:'status' , value:'pending'},
      { name:'expires', value:'1893013926'},
      { name:'label[a]', value:'/byuser/u1'},
      { name:'label[0]', value:'/bysmthng/qqq'},
      { name:'dynamic[some]', value:'^/any/some$'},
      { name:'dynamic[any]', value:'^/any/ano'},
      { name:'signature', value:'mNkdZprvtjKtve5EGLop3ZFszwrquOyBcxQrR+x38u8'}
    ];
    
  5. アップロードを始めるには、<URI-encoded-name>=<URI-encoded-value>の&で区切られたペアから成る文字列でooyalaUploader.setParameters(String)をコールしてください。 setParameters(paramStr)

setParameters()へ渡されるサンプルの文字列は以下の通りです。

pcode=lsNTrbQBqCQbH-VA6ALCshAHLWrV&status=pending&expires=1893013926&label[a]=/byuser/u1&label[0]=/bysmthng/qqq&
dynamic[some]=^/any/some$&dynamic[any]=^/any/ano&signature=mNkdZprvtjKtve5EGLop3ZFszwrquOyBcxQrR+x38u8');

パートナーの中には、サーバーでこの署名付き文字列を生成し、生成時に HTMLページへの文字列の埋め込みを希望される場合があるかもしれません。この場合、 ユーザーセッションの有効期限と同じ有効期限を使用します。もしユーザーセッションを 管理していなければ、制限分数と同じにしてください。. しかしながら、パートナーの中にはAJAXやJSONといった高度なテクニックの使用を希望される場合があります。この場合、AJAX/JSON呼び出しの結果を使用して、ooyalaUploader.upload()setParameters()を呼び出す直前に署名付き文字列を生成するサーバーへリクエストを開始します。この高度なテクニックにより、 数秒間隔の有効期限を使用することができ、アップロードリクエストを 開始する前にアップロードパラメータを検証することができます。

この記事はお役にたちましたか?