手把手教你使用腾讯云短信服务——开发者视角

概念

首先我们先介绍下腾讯云短信服务的相关概念,便于开发者对短信服务有一个整体的认识。

SDKAPPID

SDKAPPID即短信应用ID,用以区分用户腾讯云账号下不同业务,很多用户会把这个和腾讯云账号的APPID混淆,我们这里加以区分下。

腾讯云账号的APPID是在腾讯云账号信息页中呈现的,

注意】注意图中最下方的认证信息,如果您代表的是企业或者政府机构(拥有企业营业执照或者组织机构的社会信用代码)建议您将认证方式修改为企业认证,这样您在使用腾讯云短信服务时可以使用营销类型的短信。

腾讯云短信的SDKAPPID是在短信控制台下展示的,

注意】如果您需要为多个业务接入腾讯云短信服务,那么建议您添加多个应用,这样不同业务的短信服务配置可以隔离而不会互相影响。

签名

现在手机上收到的短信一般都形如下面的格式,

【腾讯云】您的验证码是 1234,请在 2 分钟内填写。

【】中的内容称为签名,代表着这条短信发出的企业或者组织机构、亦或者是产品或者服务的名称,所以当您申请签名是要么上传企业或者组织机构的营业执照要么上传代表产品或者服务的站点URL、公众号信息的截图,签名总体上就分为这两类。

模板

模板的作用是便于平台对内容进行管控,防止违规信息下发。在接入指引中您可以看到模板形如,

您的验证码是 {1},请在 {2} 分钟内填写。

{1}和{2}表示模板的变量,表示可变部分,比如验证码的具体内容、客户的性别(先生和女士)、用户的手机号尾数、时间等。

注意】尽量确保可变部分简洁,不要采用极少明文信息应对复杂内容场景,这样会使模板中明文部分过于抽象而难以通过审核,这种情况可以尝试对内容进行分类然后申请不同的模板。

接入

通过上面的概念介绍和腾讯云的短信官方文档快速入门应用管理相信开发者都能够快速地进行接入了。

开发

SDK集成

开发者如果使用的是官方SDK支持的平台进行开发那么可以直接集成进行开发。

API开发

如果开发者没有使用官方SDK所支持的平台或者官方SDK无法满足开发者要求(性能或者开发库)进行开发,那么可以按照API说明进行开发,下面进行简要说明。

协议

腾讯云的短信API使用HTTPS按照POST方法发送JSON格式内容进行请求。我们以指定模板单发短信协议为例,

HTTPS

为了保证用户的请求内容不被窃听,特别是诸如登录验证码之类的信息,腾讯云短信服务没有提供 HTTP 的协议支持。而且为了发送内容的灵活性,也只支持 POST 方法进行发送。

URL

https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx

url中包含两个参数 sdkappid,random,sdkappid 上文已经提到是短信应用ID,添加和查看方式上文已经提到,random 不带0前缀的随机整数,目的是在需要排查问题时查找日志信息,所以建议开发者使用随机整数(避免重复)。

内容

{
    "ext": "",
    "extend": "",
    "params": [
        "验证码",
        "1234",
        "4"
    ],
    "sig": "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4",
    "sign": "腾讯云",
    "tel": {
        "mobile": "13788888888",
        "nationcode": "86"
    },
    "time": 1457336869,
    "tpl_id": 19
}

可以看到内容是采用 JSON 的格式进行组织的,如果您对 JSON 不了解,可以先看下这里这里有近乎所有语言的JSON开发库,开发者可以参考使用。

这些参数在文档中有解释,这里重点介绍下sig字段。

sig字段的构建方法如下,

sha256(appkey=$appkey&random=$random&time=$time&mobile=$mobile)

用的是类似于PHP伪代码的形式,其中$打头的都是变量,代表实际使用时用的值,random的值需要注意,一定要与URL中的random参数值一致,time为请求发起时系统的UNIX时间戳,所以开发者系统时间需要经过校准或者不宜偏差过大(超过10分钟),这两个字段是为了协议的安全性而加入的,您如果有兴趣可以分别了解下唯密文攻击重放攻击

应答

{
    "result": 0,
    "errmsg": "OK",
    "ext": "",
    "fee": 1,
    "sid": "xxxxxxx"
}

开发者一般关心的是 result 不为0的情况,一般来说如果不为0,那么在errmsg会有准确的提示信息,如果没有明确的出错信息可以查看这里,或者联系官方助手。对接完成之后,可以通过统计页面查看报表,

安全

最重要的事情在最后说——安全,这里我们主要如何防刷。短信被刷的直接危害是浪费开发者经费,另外就是运营商监管。

首先腾讯云短信业务提供了频率限制能力,

其次如果您有更加高级的需求尝试接入我们的验证码服务

后记

如果读者看完这篇文章还有不清楚的地方,欢迎留言交流。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

云短信服务

1 篇文章3 人订阅

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏Android 开发者

Android 8.0 Oreo 国内可用测试平台上线

1602
来自专栏企鹅号快讯

Python 开源项目 Top30 值得收藏

编译 | AI科技大本营 参与 | SuiSui 继推出2017年机器学习开源项目Top 30榜单后,Mybridge AI又推出了一个Python开源项目To...

21710
来自专栏移动端开发

苹果审核2.1大礼包,这几个方面入手。

8402
来自专栏Keegan小钢

App项目实战之路(一):概述篇

我计划做一款App产品,包括Android和iOS,做完打算将Android和iOS客户端的代码开源,并将上架到应用宝和AppStore,之后还会不断迭代。而在...

683
来自专栏花叔的专栏

解读小程序用户信息授权机制的变动,为官方点赞

话说,有同学又问我为什么没有去解读微信小程序最新发布的特性。实在不好意思,最近花叔有点儿忙,所以就耽误了。 但这变动的意义其实比我们想象中大,所以虽然晚了点,还...

5577
来自专栏FreeBuf

挖洞经验 | 看我如何接管OLX的每一条广告

在这篇文章中,我将跟大家分享关于“不安全的直接对象引用”(IDOR)攻击的相关内容。没错,正如本文标题所写的那样,我在OLX所托管的网站上发现了一个IDOR漏洞...

2088
来自专栏Android开发经验

Android自带类实现语音合成

1062
来自专栏守望轩

微信小程序web-view的简单思考和实践

微信小程序的组件web-view推出有一段时间了,这个组件的推出可以说是微信小程序开发的一个重要事件,让微信小程序不会只束缚在微信圈子里了,打开了一个口子,这个...

3049
来自专栏全华班

快乐方块消消乐

UI是自己独立完成比较简单,打包平台我设置的是webGL平台,有需要改成Android的可以自己修改打包设置。该项目供大家参考学习使用,希望大家支持,以...

882
来自专栏Crossin的编程教室

给新同学:编程教室资源索引

本编程教室建号四年多,已经发布了数百篇教程和文章,并且还分享了不少资源和习题。不过最近新加入的同学可能会找不到以前的内容,所以我们定期整理一下,方便大家使用。 ...

3136

扫码关注云+社区