如何使用PHP为Agora RTC直播生成有效Token并成功加入频道
Agora RTC PHP服务端可用Token生成指南
先排查常见失效原因
- 代码中填写的
App ID、App 证书和声网后台对应项目的配置不一致,开启安全模式的项目必须填写App证书,仅用App ID无法生成有效Token - 生成Token时传入的
频道名、用户ID(uid)和客户端加入频道时的参数不匹配,注意大小写、特殊字符必须完全一致 - 服务器本地时间和标准时间偏差超过5分钟,导致签名校验失败,需要先同步服务器NTP时间
- Token有效期设置过短,生成时的过期时间戳已经超过当前时间
- 选错Token类型:RTC直播场景4.x及以上版本SDK必须使用RTC Token,不要混用旧版动态密钥或RTM Token
- 权限角色配置错误:主播必须设置为发布权限,观众如果需要连麦也要提前调整为发布权限
正确生成代码实现
首先确保你使用的是对应SDK版本的Token生成类文件,核心实现代码如下:
<?php // 引入官方RtcTokenBuilder类文件 require_once "AgoraDynamicKey/php/src/RtcTokenBuilder.php"; // 基础配置,所有参数必须和客户端传入的参数匹配 $appId = "你的声网项目App ID"; $appCertificate = "你的声网项目App证书"; $channelName = "和客户端完全一致的频道名称"; // 若客户端使用数字uid则填对应数字,填0代表Token对该频道所有uid生效 $uid = 123456; // 角色配置:主播填RolePublisher,仅观看的观众填RoleSubscriber $role = RtcTokenBuilder::RolePublisher; // 有效期单位为秒,最长支持86400(24小时) $expireTime = 3600; $expireTimestamp = time() + $expireTime; // 生成Token $token = RtcTokenBuilder::buildTokenWithUid($appId, $appCertificate, $channelName, $uid, $role, $expireTimestamp); // 若客户端使用字符串类型的用户账号,使用下方方法生成 // $userAccount = "客户端传入的字符串用户账号"; // $token = RtcTokenBuilder::buildTokenWithUserAccount($appId, $appCertificate, $channelName, $userAccount, $role, $expireTimestamp);
生成后直接返回Token给客户端即可,调用时确保客户端加入频道的参数和生成Token的参数完全匹配。
内容的提问来源于stack exchange,提问作者Shahzaib Anwar Rehmani
相关产品推荐
相关产品推荐

