阿里云的短信验证码(超详细)

利用阿里云给手机发送短信验证码

第一步:登录阿里云

输入自己账号或者注册账号使用阿里云。

第二步:

登录过后,开通并使用短信服务。鼠标悬停在“产品”上,会出现阿里云提供的产品服务,在搜索框中搜索“短信服务”,搜索框显示出来,点击进去。

第三步:

开通短信服务,点击免费开通,开通服务。新账号可以免费领取100条的短信额度。

第四步:

申请签名和模板一下签名和模板是什么。

申请的签名会出现在短信开头,如此图中,“教师管理系统”便是签名。后面的内容便是模板,是我们在申请签名成功后需要申请的。模板中可变的字符为模板参数(比如说4-6位随机码),是在申请模板中进行配置的,后面可以通过代码动态给模板参数赋值。所以只要配置好签名和模板,我们的短信格式可以确定。

进入短信验证服务后,点击快速学习和测试,第一步是申请资质,这里需要用到身份证,因为防止有人发短信做坏事,个人使用的话,审核还是挺快的,一般也就几十分钟,然后将五个步骤完成,就可以得到自己申请好的签名和模板。

第五步:

RAM申请及权限配置

RAM介绍

RAM (Resource Access Management) 是阿里云提供的资源访问控制服务。RAM用户是代表任意的通过控制台或OpenAPI操作阿里云资源的人、系统或应用程序。RAM允许您在云账号下创建并管理多个用户,每个用户都有唯一的用户名、登录密码或访问密钥。
云账户与RAM用户是一种主子关系。
云账户(主账号):
1)阿里云资源归属、资源使用计量计费的基本主体
RAM用户(子账号):
1)只能存在于某个云账户下的RAM实例中
2)不拥有资源,在被授权操作时所创建的资源归属于主账户
3)RAM用户不拥有账单,被授权操作时所发生的费用也计入主账户账单。
原文链接:https://blog.csdn.net/guochen1314/article/details/110392499

(1)新建用户

鼠标悬停在右上角的头像上,然后进入AccessKey管理,

然后选择使用子账户

进入之后新建一个用户组,然后按要求填写即可

接着创建一个用户,按要求填写内容,勾选编程访问;

该步骤注意,创建完成后会得到会得到AccessKey(id,密码),一定一定一定要保存下来,这个后面会用到,并且出现一次后不会再出现,下载下来。

(2)分配权限

这里就是给RAM用户分配权限,根据我们的需要选择分配,由于我们的功能是短信验证码,我们分配以下三种权限。我当时因为没有分配权限,在JAVA代码中一直无法实现功能,所以这个要注意一下。

    AliyunDysmsFullAccess (管理短信服务(SMS)的权限)
    AliyunRAMFullAccess (管理访问控制(RAM)的权限,即管理用户以及授权的权限)
    AliyunSTSAssumeRoleAccess (调用STS服务AssumeRole接口的权限)

第六步

在JAVA中使用

(1)导入依赖坐标

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-core</artifactId>
	<version>4.6.3</version>
</dependency>
<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
	<version>2.2.1</version>
</dependency>

(2)调用API

快速学习界面往下面划,调用API

将API中的SDK实例复制下来,粘贴到JAVA项目中,配置信息改为自己的,这里的AccessKey填上面新建用户之后保存的ID和Secret。

// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * 使用AK&SK初始化账号Client
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.teaopenapi.Client createClient() throws Exception {
        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.teaopenapi.Client(config);
    }

    /**
     * API 相关
     * @param path params
     * @return OpenApi.Params
     */
    public static com.aliyun.teaopenapi.models.Params createApiInfo() throws Exception {
        com.aliyun.teaopenapi.models.Params params = new com.aliyun.teaopenapi.models.Params()
                // 接口名称
                .setAction("SendSms")
                // 接口版本
                .setVersion("2017-05-25")
                // 接口协议
                .setProtocol("HTTPS")
                // 接口 HTTP 方法
                .setMethod("POST")
                .setAuthType("AK")
                .setStyle("RPC")
                // 接口 PATH
                .setPathname("/")
                // 接口请求体内容格式
                .setReqBodyType("json")
                // 接口响应体内容格式
                .setBodyType("json");
        return params;
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.teaopenapi.Client client = Sample.createClient();
        com.aliyun.teaopenapi.models.Params params = Sample.createApiInfo();
        // query params
        java.util.Map<String, Object> queries = new java.util.HashMap<>();
        queries.put("PhoneNumbers", "手机号");
        queries.put("SignName", "签名");
        queries.put("TemplateCode", "短信模板CODE");
        queries.put("TemplateParam", "{\"code\":\"1234\"}");
        // runtime options
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        com.aliyun.teaopenapi.models.OpenApiRequest request = new com.aliyun.teaopenapi.models.OpenApiRequest()
                .setQuery(com.aliyun.openapiutil.Client.query(queries));
        // 复制代码运行请自行打印 API 的返回值
        // 返回值为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
        client.callApi(params, request, runtime);
    }
}

运行main方法即可成功运行。

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值