刚入行,请各位帮我看看,代码是在注册的时候利用手机验证码辅助注册的,利用阿里云的短信服务来进行,accessKeyId和 accessKeySecret已经正确填写,资质、模板、签名等也已经通过认证,且正确配置在对应的xx位置,但是在apifox中提示发送失败
(下图为node.js中app.js的大部分代码)
(下图为控制台错误提示)
(下图为apifox页面)
(下面ali.js的代码)
const express = require('express');
const router = express.Router(); // 创建一个 router 实例
const Core = require('@alicloud/pop-core'); // 引入阿里云 SDK
const client = new Core({ // 创建 Client 对象
accessKeyId: 'xx', // 替换成自己的 AccessKey ID
accessKeySecret: 'xxx', // 替换成自己的 AccessKey Secret
endpoint: 'https://dysmsapi.aliyuncs.com',// API 访问入口,根据实际情况修改
apiVersion: '2017-05-25' // API 版本号,根据实际情况修改
});
let yanzhengma = ''
// 生成随机验证码
function generateCode() {
const code = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000;
// yanzhengma = code.toString()
return code.toString();
}
// 发送短信验证码
router.post('/url', (req, res) => {
const phoneNumber = req.body.phone; // 获取手机号码
const code = generateCode(); // 生成验证码
yanzhengma = code; // 找回密码的校验,yanzhengma存储的是生成的验证码
const params = {
"RegionId": "cn-beijing",
"PhoneNumbers": phoneNumber,
"SignName": "xx",// 短信签名名称,需先在阿里云控制台中申请审核通过
"TemplateCode": "xx",// 短信模板 CODE,需先在阿里云控制台中申请审核通过
"TemplateParam": JSON.stringify({
"code": code
})
};
const requestOption = {
method: 'POST',
timeout: 6000
};
client.request('SendSms', params, requestOption).then((result) => {
console.log(result);
res.status(200).json({
message: '验证码已发送,请注意查收!',
code: code
});
}, (ex) => {
console.log(ex);
res.status(500).json({
message: '短信发送失败,请稍后重试!'
});
});
});
// 验证验证码
router.post('/verify-code', (req, res) => {
const phoneNumber = req.body.phoneNumber; // 获取手机号码
const inputCode = req.body.code; // 获取用户输入的验证码
console.log(inputCode);
console.log(yanzhengma);
if (inputCode === yanzhengma) { // 验证码一致,登录成功
res.status(200).json({
message: '登录成功!'
});
} else { // 验证码不一致,登录失败
res.status(400).json({
message: '验证码错误,请重新输入!'
});
}
});
// 导出 router 以便在主应用中使用
module.exports = router;