相信不少小伙伴也都想实现一个发送短信验证码的功能,而短信验证码在验证性场景应用是非常广泛的,就我们所知的登录任何app或者网站都是需要短信验证码的。
那么我今天就来看看到底如何实现一步步自己的短信验证码功能。
首先声明以下几点我在实现过程中所使用的东西:
- 使用的是腾讯云API。
- 使用的操作系统环境是centos。
接下来就从以下几步慢慢讲解:
01安装C++ SDK
因为我所用的是腾讯云产品,所以这里要安装与之相对应的C++ SDK。该SDK的git地址如下:
这里安装步骤讲解的也比较详细,大家有疑问可以去这里面看看。
所以在这里我只讲一下在centos环境下的安装步骤:
1.将该源码下载到本地:
git clone gitee.com/tencentclou…
2.GCC编译器要在 4.8 或以上版本,这个需要注意下,低于这个版本的要升级一下,网上有很多方法,我就不在过多讲述。
3.安装 cmake 3.0 或以上版本
yum install cmake3
4.依赖库安装:
libcurl安装:
yum install libcurl-devel
openssl安装:
yum install openssl-devel
libuuid安装:
yum install libuuid-devel
5.使用源码构建SDK
cd tencentcloud-sdk-cpp(刚才git的文件)
mkdir sdk_build
cd sdk_build
cmake3 ..
make
sudo make install
cd tencentcloud-sdk-cpp(刚才git的文件)
在上面的make的过程中可能要很长时间(可能2个小时左右),而且在编译的过程中可能会出现下面这个错误中断编译:
c++: internal compiler error: killed (program cc1plus)
这是由于机器的内存不够引起的,可以增加一些交换空间以此解决该问题,方法网上也很多,这里给出一个我用过的方法链接:
当然如果你不想经历上面那些安装编译步骤的话也可以在百度网盘获取:
提取码:bqpa
即可下载我编译好的,程序中所需的头文件和库文件。在获取到文件之后你需要将头文件和库文件放到下面的位置才能使用。
1)头文件
获取到tencentcloud(该文件里面装的是头文件)文件之后将该文件添加到你的centos系统里面,假如该文件被添加到了centos系统的根目录‘/’ 下,则执行下面的命令将tencentcloud文件移动到 :/usr/local/include/ 目录下:
//这里先将原先的文件备份一下,以防出错的时候可以恢复到原来的样子
cp -rf /usr/local/include /usr/local/include.bak
//将tencentcloud整体移动到include下面,而不是光移动里面的内容
mv /tencentcloud /usr/local/include/
2)库文件
同样将获取到的库文件lib64下的所有库文件都添加到:/usr/local/lib64/ 目录下:
//这里先将原先的文件备份一下,以防出错的时候可以恢复到原来的样子
cp -rf /usr/local/lib64 /usr/local/lib64.bak
//这里只将获取到的lib64里面的所有文件移动到/usr/local/lib64/ 目录下
mv /lib64/ /usr/local/lib64/
02到腾讯云申请所需要的东西
在上面安装完SDK之后,我们需要到腾讯云官网上申请一些短信所需要的东西。
在搜索框内搜索短信,如图:
然后点击短信就可进入到短信服务主界面如下图:
之后我们需要申请签名和短信模板。
1.签名的申请
依次点击:国内短信>>签名管理>>创建签名,在创建签名页面中填写申请的内容,根据要求填写即可,例如下图,这里我是用公众号申请的:
\
之后等待审核通过即可。
2.短信模板申请
依次点击国内短信>>正文模板管理>>创建正文模板,根据要求填写即可,例如下图:
审核通过后如下:
这里的模板id后面写程序的时候会用到。
3.需要注意一下,我们需要在腾讯云购买一些短信,否则即使我们的程序写好了,也是无法发送短信的。一般新人注册都会免费送一些的。
03开始写程序
做好上面哪些之后,我们就可以来编写我们的程序了,真正的实现一个短信验证码发送功能。
1.首先我们建立一个文件在这里存放我们的程序:
mkdir project
cd project
2.创建CMakeLists.txt文件
在该文件写入一下内容,不需要做任何修改直接粘贴即可:
cmake_minimum_required (VERSION 3.1)
project(DescribeInstances)
set(CMAKE_CXX_STANDARD 11)
add_executable(DescribeInstances DescribeInstances.cpp)
target_link_libraries(DescribeInstances tencentcloud-sdk-cpp-sms tencentcloud-sdk-cpp-core)
3.创建DescribeInstances.cpp
在改文件中写入以下内容,代码中带注释说明的地方是需要我们修改的,具体参数的获取在后面详细介绍:
#include <tencentcloud/core/Credential.h>
#include <tencentcloud/core/profile/ClientProfile.h>
#include <tencentcloud/core/profile/HttpProfile.h>
#include <tencentcloud/sms/v20190711/SmsClient.h>
#include <tencentcloud/sms/v20190711/model/SendSmsRequest.h>
#include <tencentcloud/sms/v20190711/model/SendSmsResponse.h>
#include <iostream>
#include <string>
#include <vector>
using namespace TencentCloud;
using namespace TencentCloud::Sms::V20190711;
using namespace TencentCloud::Sms::V20190711::Model;
using namespace std;
int main() {
//1.填写SecretId(密钥id)和SecretKey(密钥密码)
Credential cred = Credential("填你的SecretId", "填你的SecretKey");
HttpProfile httpProfile = HttpProfile();
httpProfile.SetEndpoint("sms.tencentcloudapi.com");
ClientProfile clientProfile = ClientProfile();
clientProfile.SetHttpProfile(httpProfile);
SmsClient client = SmsClient(cred, "", clientProfile);
SendSmsRequest req = SendSmsRequest();
//2.要发送的手机号,这里的+86不要丢了
vector<string> phoneNumberSet1 = {"+86后面写你要发送的手机号"};
req.SetPhoneNumberSet(phoneNumberSet1);
//3.短信模板id
req.SetTemplateID("填你的短信模板id");
//4.短信签名内容
req.SetSign("填写你的短信签名,例如我的:不二技术");
//5.短信中的参数,这里的参数取决于,短信模板中的参数
vector<string> templateParamSet1 = {"参数1", "参数2"...};
req.SetTemplateParamSet(templateParamSet1);
//6.短信SdkAppid
req.SetSmsSdkAppid("填你的sdkAppid");
auto outcome = client.SendSms(req);
if (!outcome.IsSuccess())
{
cout << outcome.GetError().PrintAll() << endl;
return -1;
}
SendSmsResponse resp = outcome.GetResult();
return 0;
接着执行以下命令进行编译就可以了
mkdir build
cd build
cmake ..
make
//如果前面都没有问题,执行可执行文件,目标手机就可以收到短信了
./DescribeInstances
下面讲一下,上面有些参数怎么获取:
1)SecretId(密钥id)和SecretKey(密钥密码)
在腾讯云搜索框中输入api密钥,点击api密钥管理,如下图:
跳转之后我们可以看到如下的密钥信息:
将SecretId,SecretKey填入参数中即可。
2)短信模板id
这里就是我们之前申请的短信模板的id,如下:
3)短信签名内容
这个是我们之前在创建签名的时候,填写的内容,如下:
\
4)短信中的参数
这个和我们之前创建的短信模板内容中的参数一一对应,例如短信模板:
{1}为您的登录验证码,请于{2}分钟内填写,如非本人操作,请忽略本短信。本短信由不二技术支持!
这里有两个参数:{1}和{2},所以上面的程序中也要按顺序填入两个对应的参数。
5)短信SdkAppid
在短信服务主界面中依次点击:应用管理>>应用列表,我们就可以看见SdkAppid了,如下图:
今天的知识就分享到这里了,我们下期再见!
欢迎关注点赞,持续更新更多有趣知识!