uni-app 短信发送出错,单纯调用uniCloud.sendSms会报keyid参数错误
uni-app 短信发送出错,单纯调用uniCloud.sendSms会报keyid参数错误
示例代码:
'use strict';
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
const resss = await uniCloud.sendSms({
appid: '__UNI__557671B',
phone: '1525922****',
templateId: '323**',
data: { code: '661296', name: '***', action: '身份验证', expMinute: '3' }
})
//返回数据给客户端
return event
};
操作步骤:
'use strict';
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
const resss = await uniCloud.sendSms({
appid: '__UNI__557671B',
phone: '1525922****',
templateId: '323**',
data: { code: '661296', name: '***', action: '身份验证', expMinute: '3' }
})
//返回数据给客户端
return event
};
预期结果:
发送成功
实际结果:
{
"success": false,
"error": {
"code": "FunctionBizError",
"message": "50003:参数错误:keyId"
}
}
bug描述:
本地运行正常 云端就会报错 就只uniCloud.sendSms都会报错
2 回复
已在im报障群里沟通
在uni-app中使用uniCloud发送短信时遇到keyid
参数错误的问题,通常是因为在调用uniCloud.sendSms
方法时未正确传递或配置keyid
参数。keyid
是用于标识云函数发送短信时所依赖的短信服务配置的唯一标识。以下是一个修正后的代码示例,展示了如何在uni-app中正确配置和使用uniCloud.sendSms
发送短信。
首先,确保你已经在uniCloud的数据库中配置了短信服务,并获取了相应的keyid
。假设你已经配置好了一个名为smsConfig
的云函数配置,其中包含了正确的短信服务信息。
步骤 1: 配置云函数
在cloudfunctions
目录下创建一个名为sendSms
的云函数,并在其index.js
中编写以下代码:
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init();
const db = cloud.database();
exports.main = async (event, context) => {
const { phoneNumber, templateId, data } = event;
const res = await cloud.openapi.security.sendSms({
phone: phoneNumber,
templateId: templateId,
data: data,
uniCloudEnv: 'your-uni-cloud-env-id', // 替换为你的uniCloud环境ID
keyid: 'your-keyid', // 替换为你的短信服务配置的keyid
});
return res;
};
步骤 2: 在前端调用云函数
在你的uni-app前端代码中,通过uniCloud.callFunction
调用上述云函数,并传递必要的参数:
uniCloud.callFunction({
name: 'sendSms',
data: {
phoneNumber: '12345678901', // 替换为目标手机号
templateId: 'TEMPLATE_ID', // 替换为你的短信模板ID
data: {
code: '123456', // 短信模板中的变量数据
// 其他变量数据...
},
},
success: (res) => {
console.log('短信发送成功:', res.result);
},
fail: (err) => {
console.error('短信发送失败:', err);
},
});
注意事项
- 确保
uniCloudEnv
和keyid
正确无误,并且与你在uniCloud后台配置的短信服务相匹配。 phoneNumber
需要是合法的手机号码格式。templateId
和data
需要与你在短信服务平台上配置的模板相匹配。
通过以上步骤,你应该能够解决keyid
参数错误的问题,并成功发送短信。如果问题依旧存在,请检查uniCloud后台的配置是否有误或联系uniCloud技术支持。