PHP使用SimpleTokenBuilder生成的token不能用?临时token就没问题。

客户端:Android SDK 2.3
服务器:PHP5 Or PHP7

文件:https://github.com/AgoraIO/Tools/tree/master/DynamicKey/AgoraDynamicKey/php/src
方法:SimpleTokenBuilder.php
$builder = new SimpleTokenBuilder($appID, $appCertificate, $channelName, $uid); $builder->initPrivilege(SimpleTokenBuilder::Role["kRoleAdmin"]); $token = $builder->buildToken();
生成的token不能用,临时token就没问题,而且发现长度也不一致。

1、你使用的是 RTC SDK 吗?对应的生成 token 代码如下:

<?php
include("../src/RtcTokenBuilder.php");
$appID = "970CA35de60c44645bbae8a215061b33";
$appCertificate = "5CFd2fd1755d40ecb72977518be15d3b";
$channelName = "7d72365eb983485397e3e3f9d460bdda";
$uid = 2882341273;
$uidStr = "2882341273";
$role = RtcTokenBuilder::RoleAttendee;
$expireTimeInSeconds = 3600;
$currentTimestamp = (new DateTime("now", new DateTimeZone('UTC')))->getTimestamp();
$privilegeExpiredTs = $currentTimestamp + $expireTimeInSeconds;
$token = RtcTokenBuilder::buildTokenWithUid($appID, $appCertificate, $channelName, $uid, $role, $privilegeExpiredTs);
echo 'Token with int uid: ' . $token . PHP_EOL;
$token = RtcTokenBuilder::buildTokenWithUserAccount($appID, $appCertificate, $channelName, $uidStr, $role, $privilegeExpiredTs);
echo 'Token with user account: ' . $token . PHP_EOL;
?>

2、确保传入的各项参数正确且一一对应。
3、确保时间戳没有过期。

我也发现同样的问题,怎么解决?

有官方指导吗?PHP的的确有问题

刚才我测试过了,并没有问题。你的使用方法可能不对,检查看下 join 时传的 channelid 和 uid 参数,是否和生成 token 时传的 channelid、uid 参数对应?

遇到了同样问题,已经解决.
我用的网页进行的测试,需要点开高级设置,填写对应的UID.
后台生成的临时token不用填写这个UID能正常用,也是神奇.

这是因为后台生成临时 token 时没有选择校验 UID,即 uid 参数传的是 0。那么客户端无论使用什么 uid 都是可以通过校验的~