
最近业余时间在做一个小工具站,注册登录一直用的邮箱验证码。后来发现不少用户反馈说没收到邮件(进垃圾箱了),干脆加一个短信验证码作为备选。
本来以为很快能搞定,结果光调研方案就花了不少时间。
先看了几个主流云厂商的短信服务。功能确实全面,支持验证码、通知、营销各种场景。但接入流程对个人开发者不太友好:
第一步就是企业实名认证。我一个个人项目,没有营业执照,直接被挡住了。有的平台虽然支持个人认证,但签名和模板审核要求写得很严,来来回回改了几次还是没过。
时间成本是最大的问题。光审核这一步就可能消耗一两天,对于一个周末项目来说太重了。
后来在论坛上看到一个轻量方案,试了一下发现特别适合个人项目:
不需要企业认证,注册就能用。没有签名模板审核流程,注册后直接拿到调用凭证。只做验证码这一个场景,接口极简。
调用方式就是一个标准的 POST 请求:
curl -d '{"code": "153146", "to": "186xxxx9898"}' \
https://push.spug.cc/sms/你的模板编码模板编码 在后台登录后就能拿到,它同时也是调用凭证,不需要额外配 AppKey 或算签名。
返回值的含义: 接口返回 {"code":200,"msg":"请求成功","request_id":"..."} 时,code=200 只代表请求入库了,短信是异步发送的。如果要确认是否真的送达了,需要拿 request_id 去发送日志查。
安全配置: 模板编码不能暴露到前端,必须从服务端调用。后台支持 IP 白名单,限制只有你服务器的 IP 才能调。如果编码不小心泄露了,可以在后台一键重置。
费用: ¥0.05 一条,按条计费。新注册用户送 2 条用来测试。我的小工具站日活也就几十人,一个月短信费用大概在十几块钱。
只有验证码: 目前只支持验证码场景,没有通知类或营销类短信。如果后续需要这些,还是得接大厂的服务。
Python Flask 为例:
import requests
import random
from flask import Flask, request, jsonify
app = Flask(__name__)
code_cache = {} # 生产环境用 Redis
@app.route('/api/send-code', methods=['POST'])
def send_code():
phone = request.json.get('phone')
code = str(random.randint(100000, 999999))
resp = requests.post(
'https://push.spug.cc/sms/你的模板编码',
json={'code': code, 'to': phone}
)
if resp.json()['code'] == 200:
code_cache[phone] = code
return jsonify({'success': True})
return jsonify({'success': False}), 500Spring Boot 或 Go 的接法也一样,就是一个 HTTP POST。
个人项目接短信验证码,核心需求是门槛低、接入快、成本可控。大厂方案功能全但流程太重。这个方案的优势就是简单——没有认证审核的前置流程,一个 POST 就能发。适合 side project、MVP 验证、个人工具站这类场景。
等项目规模起来,需要通知短信或更高级的能力时,再切到大厂平台也不麻烦。
我用的短信接口是 sms.spug.cc,有兴趣的可以试试。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。