短信验证码,作为用户注册、登录、找回密码、支付确认等环节的安全基石,几乎是每个网站、App和小程序的标配功能。然而,对于广大充满创意和激情的个人开发者来说,接入短信验证码服务当前成了一道难以逾越的"高墙"。
1、资质认证难: 当前运营商政策收紧,要求企业必须提供企业营业执照等资质完成认证和签名实名报备。许多个人开发者在第一步就被卡住。
2、签名模板审: 即使找到服务商,签名申请和模板审核流程需花费一定时间,对于追求敏捷开发的个人项目来说不够高效。
3、老用户危机: 部分早期接入的老用户,也可能因政策变化或资质问题,面临短信发送失败率高的风险,直接影响用户体验和业务运行。
下面给大家分享一个如何通过【阿里云-短信认证】产品实现个人开发者接入短信验证码的实践过程。
一、为什么选短信认证

二、接入步骤

1、准备工作
注册阿里云账号,完成实名认证,前往【号码认证服务】,开通服务。
短信认证服务仅可使用API对接,还需要创建AccessKey 用于调用API。
2、发送验证码
通过API指定目标手机号、选择签名、选择模板、并为模板中的每个变量提供具体值,以触发验证码短信的发送。
3、核验验证码
通过API核验手机号和验证码是否成功通过校验,包括手机号是否和验证码匹配、验证码是否在有效期内等。
三、代码示例
发送验证码示例
const Core = require('@alicloud/pop-core');
const client = new Core({
accessKeyId: process.env.ALIYUN_ACCESS_KEY_ID,
accessKeySecret: process.env.ALIYUN_ACCESS_KEY_SECRET,
endpoint: 'https://dypnsapi.aliyuncs.com',
apiVersion: '2017-05-25'
});
async function sendSmsCode(phone) {
// 防刷检查(伪代码)
if (await isRateLimited(phone)) throw new Error('操作太频繁');
const params = {
PhoneNumber: phone,
SignName: '阿里云', // 平台预置签名
TemplateCode: 'SMS_447251001', // 预置模板(如"您的验证码是${code},5分钟内有效")
ExpireTime: 300 // 有效期 300 秒
// 注意:不传 Code,由阿里云自动生成
};
try {
const res = await client.request('SendSmsVerifyCode', params);
console.log('短信发送成功:', res);
return { success: true };
} catch (err) {
console.error('短信发送失败:', err.message);
return { success: false, error: err.message };
}
}
返回示例
{
"AccessDeniedDetail": "无",
"Message": "成功 ",
"RequestId": "CC3BB6D2-2FDF-4321-9DCE-B38165CE4C47",
"Model": {
"VerifyCode": 4232,
"RequestId": "a3671ccf-0102-4c8e-8797-a3678e091d09",
"OutId": 1231231313,
"BizId": "112231421412414124123^4"
},
"Code": "OK",
"Success": true
}