DailyMotion Cloud API, как получить URL со строгой безопасностью реферера?

0

Я застрял с API DailyMotionCloud Мне нужно подписать URL с уровнями безопасности на нем

  1. гео-блокировка, разрешающая только: Франция
  2. референт строго разрешает только: 1 домен (oxygenstream.fr)

Мой код работает, но я не знаю, где поставить уровни безопасности при подписании моего URL. Я должен помещать его в компонент [-<pub-sec-data>] здесь: https://www.dmcloud.net/doc/api/api-streaming.html#signing-a-url

Как я должен хранить строгий URL-адрес реферала и страну в [-<pub-sec-data>]?

Вот код CloudKey.php: https://github.com/dailymotion/cloudkey-php/blob/master/CloudKey.php

Вот мой код:

<iframe src="<?php 
require_once 'CloudKey.php';

$user_id = 'aaaaaaaaaaaaaaaaaaaaaa'; 
$api_key = 'bbbbbbbbbbbbbbbbbbbbbb'; 
$media_id = '5466232b947399290102cdb6';
$preset_id = '54662c7c06361d307810e3b5'; // player preset 
$preset_name = 'OxygenStream'; // preset name

$seclevel = 32800 ; // I need 2 security levels (country & referer strict)
//          32800 = 1 << 5 . 1 << 15 or CLOUDKEY_SECLEVEL_COUNTRY . CLOUDKEY_SECLEVEL_REFERER_STRICT
$countries = 'cc=fr'; // I'm supposed to put it in the [-<pub-sec-data>] 
$referers = 'rf=http://www.oxygenstream.fr/vod/dmcloud';; // I'm supposed to put it in the [-<pub-sec-data>]

// We create the url 
$url = sprintf('https://api.dmcloud.net/player/embed/%s/%s/';, $user_id, $media_id);

// We sign the url 
$url = CloudKey_Helpers::sign_url($url, $api_key, $seclevel, null, null, null, $countries, $referers, null);

// We write the URL in the Iframe 
print($url . '&autoplay=1&preset=54662c7c06361d307810e3b5');?>" width="640" height="360" frameborder="0" allowfullscreen></iframe>

Заранее спасибо за помощь в этом.
Надеюсь, вы знаете, как исправить мой код.

Желаю вам отличного дня,

Antoine

  • 0
    <br /> <b>Fatal error</b>: Uncaught exception 'InvalidArgumentException' with message 'Invalid format for COUNTRY, should be an array of country codes.' in /home/www/0b2aa259c9df807691830fefd389c3e7/web/vod/dmcloud/CloudKey.php:464 Stack trace: #0 /home/www/0b2aa259c9df807691830fefd389c3e7/web/vod/dmcloud/index.php(76): CloudKey_Helpers::sign_url('https://api.dmc...', '1fc52a95421f0c1...', 32800, NULL, NULL, NULL, 'cc=fr', 'rf=http://www.o...', NULL) #1 {main} thrown in <b>/home/www/0b2aa259c9df807691830fefd389c3e7/web/vod/dmcloud/CloudKey.php</b> on line <b>464</b><br />
  • 0
    Это вызвано тем, что вы не передаете массив для кодов стран. Массив кодов стран должен выглядеть примерно как массив ('fr', 'be') и т. Д. Пожалуйста, смотрите мой полный ответ, если это поможет.
Теги:
security
iframe
streaming
dailymotion-api

1 ответ

0
Лучший ответ

Поскольку вы используете CloudKey PHP SDK, вам действительно не нужно создавать URL-адрес самостоятельно.

При использовании SDK это работает для меня:

$user_id = 'aaaaaaaaaaaaaaaaaaaaaa'; 
$api_key = 'bbbbbbbbbbbbbbbbbbbbbb'; 
$media_id = '5466232b947399290102cdb6';
$preset_id = '54662c7c06361d307810e3b5';
$preset_name = 'OxygenStream';

$seclevel = CLOUDKEY_SECLEVEL_COUNTRY | CLOUDKEY_SECLEVEL_REFERER_STRICT ;
$countries = array('fr');
$referers = array('http://oxygenstream.fr/vod/dmcloud');

$cloudkey = new CloudKey($user_id, $api_key);
$url = $cloudkey->media->get_embed_url(array('id' => $media_id, 'seclevel' => $seclevel, 'expires' => time() + 3600, 'countries' => $countries, 'referers' => $referers));
  • 0
    Это работает, спасибо большое!
  • 0
    Если я не хочу, чтобы срок действия этого URL истек, мне просто нужно удалить 'expires' => time() + 3600, верно?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню