手順

  1. DataV コンソールにログインします。
  2. [プロジェクト] をクリックします。
  3. プロジェクトを選択して、 [公開] をクリックします。
  4. [公開] ボタンをオンにします。 他のユーザーは次の共有リンクに表示される 共有 URL を通じてプロジェクトにアクセスできます。
    [公開] スイッチがオンになっている場合は、プロジェクトが公開されていることを示し、それ以外の場合はプロジェクトは公開されていません。
  5. プロジェクトを公開する前に、 共有設定および履歴バージョンを設定できます。

共有設定

ランダム共有リンクは、 [公開] ボタンがオンのときに生成されます。この共有リンクは、オンになるたびに変更され、直前の共有リンクはただちに無効になり復元できません。

公開機能の3つのモードは次のとおりです。

社内外のユーザーが視覚エフェクトプロジェクトにアクセスできるように、ニーズに合ったモードを選択してください。

パスワード保護の共有 (Enterprise Edition 用)

  1. 公開ウィンドウで、[パスワード保護] をクリックして、ボタンをオンにします。
  2. パスワードを入力してください。 パスワードは 6 文字以上で、以下の 3 つの条件を満たす必要があります。
    • 大文字の A から Z
    • 小文字の a から z
    • アラビア数字 0 から 9

    パスワードが正常に設定された場合、 パスワードは設定されていますが表示されます。そうでなければ、パスワード入力ボックスの色は赤になります。

  3. パスワード / トークンの有効期限: 32 時間ボタンを有効にするかどうかを選択します。
    • この認証モードが有効になっていると、訪問者がパスワードを入力して大画面に正常にアクセスした後、訪問者はパスワードなしで 32 時間以内であれば再び大画面にアクセスできます。 訪問者は 32 時間後にパスワードを再入力する必要があります。
    • この認証モードが無効になっている場合、訪問者は 1 分後にパスワードを再入力する必要があります。
訪問者が URL に再度アクセスしようとすると、システムはパスワードを要求します。

トークン保護共有 (Enterprise Edition 用)

プロジェクトを許可システムと統合したい場合は、このモードを選択できます。

  1. DataV コンソールにログインします。
  2. [プロジェクト] をクリックします。
  3. プロジェクトを選択して、 [公開] をクリックします。
  4. 公開ウィンドウで [トークン保護] をクリックして、ボタンをオンにします。
  5. パスワード / トークンの有効期限: 32 時間ボタンを有効にするかどうかを選択します。
    • この認証モードが有効になっていると、訪問者がトークン検証を通じて大画面に正常にアクセスした後、訪問者はトークン検証なしで 32 時間以内に大画面にアクセスできます。 訪問者は 32 時間後にトークンの認証を再度実行する必要があります。
    • この認証モードが無効になっている場合、訪問者は 1 分後にトークン確認を再度実行する必要があります。

トークン保護を有効にすると、DataV がトークンを生成します。 今後の使用のためにトークンを保管する必要があります。

訪問者がページURLを使用してページに直接アクセスすると、訪問者には アクセス拒否メッセージが表示され、アクセスが拒否されたことを意味します。

訪問者がこのページを開くことができるようにするには、次の手順に従います。
リプレイ攻撃を防ぐには、サーバーの時間が UTC + 8 であることを確認してください。 DataV は 1 分間のエラーのみを提供し、時間エラーが 1 分間を超えると認証は失敗します。
  1. プロジェクトを公開し、プロジェクトのコードを記録します。 これがURLの最後の部分です。
  2. コードとミリ秒 (ms) の精度の現在時刻を垂直バー (|) でつなぎます。
  3. トークンを使用して、HMAC-SHA256 base64 を介して上記のストリングを暗号化します。
  4. 時間と暗号化された署名をそれぞれ _datav_timeおよび_datav_signatureと名前をつけます。
  5. URL querystringに時間と暗号化された署名を 1 つずつ挿入します。

次に例を示します。

PHP:
<? php
  $token = "kBwoX9rFX9v4zbOT0Gjd_wr65DZ3P_WW";
  $screenID = "03d1b68faeb09671046d1ef43f588c33";
  $time = time()*1000;
  $stringToSign = $screenID.' |'.$time;
  $signature = urlencode(base64_encode(hash_hmac('sha256', $stringToSign, $token, true)));
  $url = "http://local.datav.aliyun.com:9999/share/".$screenID."?_datav_time=".$time."&_datav_signature=".$signature;
? >
<iframe width=100% height=100% src="<? =$url? >"/>
NODE.JS:
const crypto = require('crypto');
var token = "Ev97wOUSAtJusc3Vsd9O2ngr_vfVFH67";
var screenID ="14c5448c00ecde02b065c231d1659f38";
var time = Date.now();
var stringToSign = screenID +'|'+ time;
var signature = crypto.createHmac('sha256', token).update(str).digest().toString('base64');
var url="http://datav.aliyun.com/share/"+ screenID +"? _datav_time="+time+"&_datav_signature="+ encodeURIComponent(signature);
Java:
package com.company;
import java.security.*;
import java.util.Date;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import java.net.URLEncoder;
public class TokenTest {
    public static String getSignedUrl(String screenID, String token){
        Date date = new Date();
        Long time = date.getTime();
        String stringToSign = screenID + "|" + time;
        String signature = HMACSHA256(stringToSign.getBytes(), token.getBytes());
        String url = "http://datav.aliyun.com/share/"+ screenID +"? _datav_time="+time+"&_datav_signature="+ signature;
        return url;
    }
    /**
     * Sha405 encryption with Java Native Summary
     * @ Param STR encrypted message
     * @return
     */
    public static String HMACSHA256(byte[] data, byte[] key)
    {
        try {
            SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA256");
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(signingKey);
            return URLEncoder.encode(byte2Base64(mac.doFinal(data)));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        }
        return null;
    }
    private static String byte2Base64(byte[] bytes){
        return Base64.encodeBase64String(bytes);
    }
    public static void main(String[] args) throws Exception {
        System.out.println(getSignedUrl("screenId", "token"));
    }
}

履歴バージョン (Basic Edition では利用不可)

プロジェクトコンテンツのスナップショットは、バージョンを作成するときに取得されます。 アーカイブされたプロジェクトコンテンツへの編集は履歴スナップショットと同期することはできませんが、安定版をプレビューするためのバックアップとして使用することはできます。

履歴スナップショット機能を初めて有効にすると、次の図に示すようにデフォルトで 現在のバージョンになります。現在のバージョンを確認するには、共有リンクを更新してください。
履歴バージョンは互いに切り替えることができます。 ロールバック機能はサポートされていません。
  1. [バージョンの作成] をクリックします。 現在のプロジェクト設定はスナップショットとして保存されます。
    • メモ列にメモを入力します。
    • 公開機能が無効でも、スナップショットデータは保持されます。
  2. 新しいスナップショットを追加するには、 [バージョンの作成] を再びクリックします。 現在保存できる有効なスナップショットは 3 つだけです。
  3. 余分なスナップショットを削除するには、 [削除] をクリックします。
  4. スナップショットとリアルタイムバージョンを切り替えるには、次の図に示すように、 ステータス列でラジオボタンをクリックします。
  5. 選択したスナップショットバージョンのプロジェクトコンテンツを表示するには、共有ページを更新します。