## 问题描述
调用 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'
});## 诊断日志(已脱敏)
### 签名生成成功

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