如何使用阿里云短信服务构建自己的登录平台

 个人博客网站文章地址:http://blog.mclink.xyz/index/article/index/id/43.html

 前些时候在学韩大佬的swoole的时候,在登录界面用到了短信验证码登录场景,想到了阿里云的短信服务功能,就使用了一下,效果还可以,基本上2-3s短信就来了,在此记录一下我的使用经历,其实是十分简单的。

一,注册阿里云并且进行登录

 不少人可能在阿里云买过云服务器啥的,如果你已经有对应的账号了,那么更好,这里也可以使用淘宝的账户进行登录,这是阿里云的首页页面。


将鼠标移到产品那里,会弹出一个div,这里其实就是运用了hover而已,这种导航方式还是随处可见的。我们可以在div右边找到云通信对应的短信服务,进行点击。

二、进入短信服务页面,开通使用

进入后,如果有个开通使用,就点击进行服务的开通。开通成功后会显示这样的页面。


那么就进入控制台把。实际上我们需要用到的有五个:1.AccessKey  2.AccessKeySecret 3.签名 4.模板 5.SDK


所以首先你得先获取这三个东西,这里的AK要记得存起来,签名管理和模板管理是需要进行审核的,审核通过才能使用,我这里是已经创建审核通过后的。



这里的东西在接口调用的代码那里会用到,然后我们还需要获取阿里云短信的SDK,在接口调用那里我们选择短信发送API PHP版,进入后,你会发觉人家的文档还是写的十分详细的,不过都是文字版的,我们可以在在那里找到sdk下载。


下载解压后我们暂时只需要这两个文件。你需要把api_sdk放在一个文件夹里,我们会通过代码将其引入进行使用,假如你已经放好了,那么我们可以通过代码调用了,你也可以自己看下阿里提供了api_demo,我们会在它的基础上进行修改以致于符合我们的业务逻辑,例如这样调用:

<?php
namespace app\common\lib\ali;
ini_set("display_errors", "on");

require_once  APP_PATH.'../extend/ali/vendor/autoload.php'; //这里放的是你的api_sdk的位置下的autoload.php

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\SendBatchSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

// 加载区域结点配置
Config::load();

/**
 * Class SmsDemo
 *
 * 这是短信服务API产品的DEMO程序,直接执行此文件即可体验短信服务产品API功能
 * (只需要将AK替换成开通了云通信-短信服务产品功能的AK即可)
 * 备注:Demo工程编码采用UTF-8
 */
class Sms
{

    static $acsClient = null;

    /**
     * 取得AcsClient
     *
     * @return DefaultAcsClient
     */
    public static function getAcsClient() {
        //产品名称:云通信流量服务API产品,开发者无需替换
        $product = "Dysmsapi";

        //产品域名,开发者无需替换
        $domain = "dysmsapi.aliyuncs.com";

        // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
        $accessKeyId = "你自己的AK"; // AccessKeyId

        $accessKeySecret = "你的AccessKeySecret"; // AccessKeySecret

        // 暂时不支持多Region
        $region = "cn-hangzhou";

        // 服务结点
        $endPointName = "cn-hangzhou";


        if(static::$acsClient == null) {

            //初始化acsClient,暂不支持region化
            $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);

            // 增加服务结点
            DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);

            // 初始化AcsClient用于发起请求
            static::$acsClient = new DefaultAcsClient($profile);
        }
        return static::$acsClient;
    }

    /**
     * 发送短信
     * @return stdClass
     */
    public static function sendSms($phone,$code) {
        

        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new SendSmsRequest();

        //可选-启用https协议
        //$request->setProtocol("https");

        // 必填,设置短信接收号码
        $request->setPhoneNumbers($phone);

        // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
        $request->setSignName("你的签名名称");

        // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
        $request->setTemplateCode("你的模板CODE");

        // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
        $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
            "code"=>$code,
            "product"=>"dsd"
        ), JSON_UNESCAPED_UNICODE));

        // 可选,设置流水号
        // $request->setOutId("yourOutId");

        // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
        $request->setSmsUpExtendCode("1234567");

        // 发起访问请求
        $acsResponse = static::getAcsClient()->getAcsResponse($request);

        return $acsResponse;
    }

}

大致说一下代码,这是一个经过改装的demo,结合了TP5,直接调用sendSms,传入电话号码和验证码就可以进行短信的发送了,上面需要你改的有,1.AccessKeyID 2.AccessKeyScerct 3.签名名称 4.模板CODE。对了,还有require的autoload.php一定要跟你放的sdk位置对上。这里的PHP版本要求是5.4以上的。这时候你只要进行调用即可,我的项目调用的方式比较复杂,因为用到了swoole的task池,是通过投递异步任务实现的,具体的操作符合你的业务逻辑即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MClink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值