You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Agora RTM Web SDK搭建网站时遇错误码5登录失败求助

Agora RTM SDK登录失败(错误码5)解决指南

问题场景

我正在用Agora Web SDK搭建网站,已将SDK放入js文件夹,并在index.html中通过<script src="js/agora-rtm-sdk-1.5.0.js"></script>引入。我的room.js代码如下:

let appID = StringAppId
let token= StringToken
let uid = String(Math.floor(Math.random() * 232))
let room = 'default'


let initiate = async () => {
    let rtmClient = await AgoraRTM.createInstance(appID)
    await rtmClient.login({ uid, token })

    const channel = await rtmClient.createChannel(room)
    await channel.join()

    channel.on('ChannelMessage', (messageData, memberId) => {
        let data = JSON.stringify(messageData.text)
        console.log('Data: ', data)
    })

    let sendMessage = async (e) => {
        e.preventDefault()
        let message = e.target.message.value
        channel.sendMessage({ text: JSON.stringify({ 'message': message }) })
        e.target.reset()
    }


    let messageForm = document.getElementById('message__form')
    messageForm.addEventListener('submit', sendMessage)
}

initiate()

运行时出现错误:agora-rtm-sdk-1.5.0.js:8 RTM:ERROR Error Code 5: login failed with args,需要解决登录失败问题。


错误原因分析

错误码5对应Agora RTM的INVALID_ARGUMENT,即登录参数不合法,以下是具体排查和解决步骤:

  • 验证AppID有效性
    确保StringAppId是你在Agora控制台创建项目时获取的真实32位字符串,不能直接保留占位符。例如替换为:let appID = "your-actual-32-digit-app-id"。

  • 处理Token参数

    • 如果你的项目未设置App证书,可直接将token设为null或省略该参数,登录代码改为await rtmClient.login({ uid })。
    • 如果项目已设置App证书,StringToken必须替换为通过Agora Token生成工具/服务端代码生成的有效Token,不能用占位符。
  • 规范UID格式
    当前生成UID的方式String(Math.floor(Math.random() * 232))可能存在重复风险,建议生成更唯一的字符串类型UID,比如:let uid = String(Date.now() + Math.floor(Math.random() * 1000)),同时确保UID为数字字符串且长度不超过64位。

  • 优化代码细节
    原代码存在两处冗余/风险点:

    1. 接收消息时,messageData.text已经是发送时转好的字符串,无需再次JSON.stringify,应改为JSON.parse(messageData.text)解析为对象。
    2. sendMessage中的channel.sendMessage是异步操作,建议添加await并捕获错误,避免未处理的Promise异常。

修正后示例代码

// 替换为你的真实AppID
let appID = "your-actual-app-id";
// 无证书时设为null,有证书则替换为有效Token
let token = null;
// 生成唯一UID
let uid = String(Date.now() + Math.floor(Math.random() * 1000));
let room = 'default';

let initiate = async () => {
    let rtmClient = await AgoraRTM.createInstance(appID);
    await rtmClient.login({ uid, token });

    const channel = await rtmClient.createChannel(room);
    await channel.join();

    channel.on('ChannelMessage', (messageData, memberId) => {
        let data = JSON.parse(messageData.text);
        console.log('收到消息:', data, '来自用户:', memberId);
    });

    let sendMessage = async (e) => {
        e.preventDefault();
        let message = e.target.message.value;
        try {
            await channel.sendMessage({ text: JSON.stringify({ 'message': message }) });
            e.target.reset();
        } catch (err) {
            console.error('发送消息失败:', err);
        }
    };

    let messageForm = document.getElementById('message__form');
    messageForm.addEventListener('submit', sendMessage);
};

// 捕获全局初始化错误
initiate().catch(err => {
    console.error('初始化失败:', err);
});

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:06:25