Agora.io DYNAMIC_USE_STATIC_KEY с сгенерированным токеном RTC (php)

У меня проблема: я получаю DYNAMIC_USE_STATIC_KEY в консоли при попытке установить соединение.

2 токена, которые генерируются консолью Agora и rtcTokenBuilder, разные, второй длиннее, и при его использовании возникает эта ошибка. С консольным токеном все ок.

Примеры токенов: Консоль: 0068bedd2631cf24edea47479b64ad219ceIAAYXDdhxjKQyDWQEoqK0qEiAYo + dLSyd / YNAaflVD4PJO / ZQc0AAAAAEACMMKzfQDg1YAEAEGAQA

rtcTokenBuilder: 0068bedd2631cf24edea47479b64ad219ceIAADpmWghbJIToZQMC9YrQjBhtFgpdZS4tIlOkXTjk + LKe / ZQc0h39v0IgCa0wUAjQAgAjtAgAgAgCa0wUAjQYgAgAgAg5AgCAjQAjtgAgAg5

rtcTokenBuilder Фрагмент кода:

$appID = "8*************************";
$appCertificate = "+++++++++++++++++++++++++++7";
$channelName = "Test Chamber";
$uid = 0;
$role = RtcTokenBuilder::RoleAttendee;
$expireTimeInSeconds = 300; // 5 min for test purposes
$currentTimestamp = (new DateTime("now", new DateTimeZone('UTC')))->getTimestamp();
$privilegeExpiredTs = $currentTimestamp + $expireTimeInSeconds;
$token = RtcTokenBuilder::buildTokenWithUid($appID, $appCertificate, $channelName, $uid, $role, $privilegeExpiredTs);
echo $token;

js файл:

client.join(token, room, 0, (uid) => { // 0 -> uid
    let localStream = AgoraRTC.createStream({
        audio: true,
        video: true
    });
    localStream.init(() => 
      .....

client.on("onTokenPrivilegeWillExpire", function(){
    $.ajax({
        url: tokenGenPath, // path to rtcTokenBuilder php generator  
        method: "POST",
        success: function(data){
           newToken = data;
        },
        error: function(){
        }
    });
    client.renewToken(newToken);
});

Здесь говорится, что я не предоставляю предварительное соединение с токеном: Документы Agora

P.S. Я также заметил, что если я создаю токен в консоли Agora для начала, и в случае истечения срока действия этого токена создается новый действительный токен из rtcTokenBuilder, и соединение / разговор продолжается. введите описание изображения здесь


person A. Volg    schedule 23.02.2021    source источник
comment
@Hermes, я видел, что у вас большой опыт работы с технологиями WebRTC и особенно с Agora, может быть, вы мне поможете?   -  person A. Volg    schedule 23.02.2021


Ответы (1)


Итак, проблема была в 2-х местах. Сначала я изменил вызов AJAX

Из

client.on("onTokenPrivilegeWillExpire", function(){
  $.ajax({
    url: tokenGenPath, // path to rtcTokenBuilder php generator  
    method: "POST",
    success: function(data){
       newToken = data;
    },
    error: function(){
    }
 });
  client.renewToken(newToken);
});

To:

client.on("onTokenPrivilegeWillExpire", function(){
   $.post(tokenGenPath, function (token){
      client.renewToken(token);
    });
});

Во-вторых, я переместил генерацию первого токена из основной функции с инициализацией клиента:

$.post(tokenGenPath, function (data){
   token = data;    
});

function runApp (room, client, token){
    client.join(token, room, 0, (uid) => { // 0 -> uid
       let localStream = AgoraRTC.createStream({
       audio: true,
       video: true
    });
    localStream.init(() => 
        .....
}

введите описание изображения здесь

person A. Volg    schedule 23.02.2021