uni-app uni-admin 短息发送报错 sendSms 方法错误代码 50003
uni-app uni-admin 短息发送报错 sendSms 方法错误代码 50003
操作步骤:
- 问题1复现:登录uni-admin,系统管理-用户关联,群发短信,导入模板
- 问题2复现:填写模版数据后,点击发送短信
预期结果:
- 问题1预期结果:成功导入模板
- 问题2预期结果:成功发送短信
实际结果:
- 问题1实际结果:导入模板报错 ,错误信息“请先配置smsKey和smsSecret(http://localhost:5173/admin/@fs/G:/Users/pc/Downloads/HBuilderX.3.3.13.20220314/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-cloud/dist/uni-cloud.es.js:2953:22)”
- 问题2实际结果:短信未发出,查看uni-sms-co 函数运行日志, sendSms 方法报错 50003,参数错误:appid
bug描述:
-
uniadmin-短信导入模板报错 ,错误信息“请先配置smsKey和smsSecret(http://localhost:5173/admin/@fs/G:/Users/pc/Downloads/HBuilderX.3.3.13.20220314/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-cloud/dist/uni-cloud.es.js:2953:22)” | 开发环境 | 版本号 | 项目创建方式 | | — | — | — | | HBuilder X | 4.29 | - | | uni-id-common | 1.0.18 | - | | uni-id-pages | 1.1.20 | - | | uni-starter | 2.2.0 | - | | uni-admin | 2.4.17 | - |
-
问题追踪:smsConfig 值为空,将 以下代码注释后可导入短信模板
if (!smsConfig.smsKey || smsConfig.smsKey.length <= 20 || !smsConfig.smsSecret || smsConfig.smsSecret.length <= 20) { hthrow new Error('请先配置smsKey和smsSecret') }
-
短息发送,sendSms 方法报错,错误代码50003,参数错误:appid,具体方法uniCloud\cloudfunctions\uni-sms-co\index.obj.js目录下的 sendSms ,排查日志,已获取到appid 数据结构
sendSms-task { _id: '67287367ce5ec9aad519bc29', app_id: 'UNIA061211', name: '123', template_id: '34048', template_content: '您的验证码为${code},该验证码${expMinute}分钟内有效,请勿泄露于他人', vars: [ { field: 'code', value: '23' }, { field: 'expMinute', value: '33' } ], to: { type: 'user', receiver: [ '670cbd65bd0220786d9dd98e' ] }, send_qty: 1, success_qty: 0, fail_qty: 0, create_date: 1730704231889 }
sendData { appId: 'UNIA061211', templateId: '34048', data: { code: '23', expMinute: '33' }, phone: '15666905633' }
sendSms 方法的 sendData 对象,appId要改为appid小写。。。
let sendData = {
appid: task.app_id,
// smsKey: smsConfig.smsKey,
// smsSecret: smsConfig.smsSecret,
templateId: task.template_id,
data: {}
};
在处理 uni-app
和 uni-admin
中的短信发送功能时遇到 sendSms
方法错误代码 50003
通常指示后端服务在处理短信发送请求时遇到了问题。错误代码 50003
可能是自定义的错误码,具体含义需要参考你的后端服务或短信服务提供商的文档。不过,我可以提供一个基本的代码示例,展示如何在 uni-app
中调用 uni-admin
提供的短信发送接口,并处理可能的错误情况。
首先,确保你的 uni-admin
后端已经正确配置了短信服务提供商(如阿里云短信、腾讯云短信等),并且有一个可用的 sendSms
接口。
uni-admin 后端代码示例(Node.js)
假设你使用的是 Node.js 和 Express 框架,并且已经集成了短信服务SDK:
const express = require('express');
const app = express();
const smsService = require('./smsService'); // 假设这是你的短信服务封装
app.post('/api/sendSms', async (req, res) => {
try {
const { phoneNumber, templateId, templateParams } = req.body;
await smsService.sendSms(phoneNumber, templateId, templateParams);
res.status(200).json({ success: true });
} catch (error) {
console.error('Send SMS error:', error);
res.status(500).json({ success: false, errorCode: 50003, message: error.message });
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
uni-app 前端代码示例
在 uni-app
中,你可以使用 uni.request
来调用上述 sendSms
接口:
uni.request({
url: 'http://localhost:3000/api/sendSms', // 根据实际情况调整URL
method: 'POST',
data: {
phoneNumber: '12345678901',
templateId: 'TEMPLATE_ID',
templateParams: { code: '123456' }
},
success: (res) => {
if (res.data.success) {
uni.showToast({ title: '短信发送成功', icon: 'success' });
} else {
uni.showToast({ title: `发送失败: ${res.data.message}`, icon: 'none' });
console.error('Send SMS failed with errorCode:', res.data.errorCode);
}
},
fail: (err) => {
uni.showToast({ title: '请求失败', icon: 'none' });
console.error('Request failed:', err);
}
});
这个示例展示了如何构建和调用短信发送接口,并处理可能的错误响应。确保在实际应用中,根据你的短信服务提供商的API文档调整相关参数和错误处理逻辑。同时,注意在生产环境中不要硬编码敏感信息,如电话号码和模板ID,应使用安全的方式管理这些信息。