Я работаю с OpenTok, пытаюсь опубликовать приложение, в котором человек показывает комнату, и некоторые клиенты могут видеть, купить ее или нет.
При использовании примера кода на моем локальном хосте (а также в Firefox и неприятном iExplorer) все работает гладко, но когда я делаю это в Chrome, я получаю эту ошибку в моей консоли JS:
OT.Publisher.onStreamAvailableError Permission Denied
Я не помню, чтобы никогда не говорил «нет» ни одному всплывающему окну, в котором меня просили разрешить поделиться моей камерой, поэтому это не похоже на «Chrome запомнит мой последний выбор».
Любая помощь?
Это код, который я выполняю:
<?php
//Obviously I changed this.
$apiKey = "123456789";
$apiSecret = "VICTORIA's SECRET";
require '../vendor/autoload.php';
use OpenTok\OpenTok;
use OpenTok\MediaMode;
use OpenTok\Session;
use OpenTok\Role;
$opentok = new OpenTok($apiKey,$apiSecret);
$session = $opentok->createSession();
$sessionId = $session->getSessionId();
$data = array(
'role' => Role::PUBLISHER,
'data' =>"");
$token = $session->generateToken($data);
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>OpenTok Hello World</title>
<script src='https://static.opentok.com/v2/js/opentok.min.js'></script>
<!--script src="//static.opentok.com/webrtc/v2.2/js/TB.min.js"></script-->
<script type="text/javascript">
var token = '<?php echo $token; ?>';
var apiKey = '<?php echo $apiKey; ?>';
var sessionId = '<?php echo $sessionId; ?>';
var session = TB.initSession(sessionId);
var publisher = TB.initPublisher(apiKey, 'subscribers');
// Attach event handlers
session.on({
sessionConnected: function(event)
{
session.publish(publisher);
},
streamCreated: function(event)
{
var subContainer = document.createElement('div');
subContainer.id = 'stream-' + event.stream.streamId;
document.getElementById('subscribers').appendChild(subContainer);
session.subscribe(event.stream, subContainer);
}
});
session.connect(apiKey, token);
</script>
</head>
<body>
<h2>Hello, Universe!</h2>
<div id="publisher"></div>
<div id="subscribers"></div>
</body>
</html>
Когда я проверяю консоль JS, я получаю это предупреждение:
getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
Также эта ошибка:
OT.Publisher.onStreamAvailableError Permission Denied
Это наш сервер разработки, поэтому не https.
РЕДАКТИРОВАТЬ:
После проверки OpenTok JS, которую я должен загрузить в beging, я понимаю это:
// The user has clicked the 'deny' button the the allow access dialog
// (or it's set to always deny)
var onAccessDenied = function(error) {
if (_isScreenSharing) {
if (global.location.protocol !== 'https:') {
/**
* in http:// the browser will deny permission without asking the
* user. There is also no way to tell if it was denied by the
* user, or prevented from the browser.
*/
error.message += ' Note: https:// is required for screen sharing.';
}
}
logging.error('OT.Publisher.onStreamAvailableError Permission Denied');
Таким образом, он не спросит меня, если я использую http. Есть способ обойти это? Переписать это поведение?
Задача ещё не решена.
Других решений пока нет …