收藏
回答

调用 wx.joinVoIPChat 时,始终报 access denied 错误是怎么回事呢?

## 问题描述


调用 wx.joinVoIPChat 时,始终报 access denied 错误,错误码 -1000。所有技术参数验证正常,签名生成也正确,但微信服务器仍然拒绝访问。


## 环境信息


- **小程序类型**: 企业认证(已认证)

- **测试版本**: 体验版(已确认不是开发版)

- **基础库版本**: 3.12.0(满足 2.7.0+ 要求)

- **微信版本**: 8.0.65

- **平台**: Android 10

- **云开发环境**: 已开通并正常使用


## 错误信息


{

  "errno": 102,

  "errMsg": "joinVoIPChat:fail:access denied, appId=wxe60c69db45dc145b",

  "errCode": -1000

}## 已确认的配置


### 1. 权限配置 ✅

- 小程序后台"接口设置"中已开通"双人音视频对话"权限

- 权限状态显示为"已开通"(绿色)

- 开通时间已超过24小时


### 2. 类目配置 ✅

- 小程序类目:工具 > 视频客服

- 类目状态:已通过审核

- 类目符合 VOIP 功能要求


### 3. 企业认证 ✅

- 小程序主体类型:企业

- 认证状态:已认证


### 4. 云函数配置 ✅

- 云函数 voipManager 已部署

- 环境变量 APPSECRET 已正确配置(32位)

- 云函数测试签名生成成功


### 5. 签名生成验证 ✅

- 签名算法:`sha1(appId + groupId + nonceStr + timeStamp + appSecret)`

- 签名长度:40位(SHA1正确)

- 签名模式:production

- timeStamp 类型:number(数字类型)

- 所有参数格式正确


## 技术实现细节


### 云函数签名生成

const timestamp = Math.floor(Date.now() / 1000);

const nonceStr = generateNonceStr();

const signStr = `${appId}${groupId}${nonceStr}${timestamp}${appSecret}`;

const signature = crypto.createHash('sha1').update(signStr).digest('hex');### 前端调用代码t

wx.joinVoIPChat({

  signature: signData.signature,  // 40位SHA1签名

  groupId: this.groupId,          // 房间ID

  nonceStr: signData.nonceStr,    // 随机字符串

  timeStamp: Number(signData.timeStamp),  // 数字类型时间戳

  muteConfig: {

    muteMicrophone: false,

    muteEarphone: false

  },

  roomType: 'voice'

});## 诊断日志(已脱敏)


### 签名生成成功

回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    2025-12-03

    wxe60c69db45dc145b 没有调用权限 确认是这个appid吗

    2025-12-03
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    2025-12-01
    有用
登录 后发表内容