阿里云第三方短信验证登录

382 阅读2分钟

现在的手机短信验证在很多地方都需要用到。 可以通过阿里云第三方来实现这个操作。 首先得通过阿里云去申请注册一个测试的签名

image.png 这个阶段一般等待1到2个小时就可以。 然后还需要去注册一个模板

image.png 这里的关联签名就写前面注册的前面。然后剩下的就按要求填写就好。 这个过程大概也需要1到2个小时就可以申请成功。 接下来就是去创建一个RAM的角色,这个过程直接按着需求填写就行,这里不需要人工审核,可以直接完成。 接下来就是通过API调发送短信。此时会进入这个界面

image.png 选择SDK示例然后选择对应的语言就行。接下来就看代码咯!

// This file is auto-generated, don't edit it. Thanks.
package main

import (
   "os"
   dysmsapi20170525  "github.com/alibabacloud-go/dysmsapi-20170525/v3/client"
   openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
   util  "github.com/alibabacloud-go/tea-utils/v2/service"
   "github.com/alibabacloud-go/tea/tea"
)
/**
 * 使用AK&SK初始化账号Client
 * @param accessKeyId
 * @param accessKeySecret
 * @return Client
 * @throws Exception
 */
func CreateClient (accessKeyId *string, accessKeySecret *string) (_result *dysmsapi20170525.Client, _err error) {
   config := &openapi.Config{
      // 必填,您的 AccessKey ID
      AccessKeyId: accessKeyId,
      // 必填,您的 AccessKey Secret
      AccessKeySecret: accessKeySecret,
   }
   // 访问的域名
   config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
   _result = &dysmsapi20170525.Client{}
   _result, _err = dysmsapi20170525.NewClient(config)
   return _result, _err
}
 //可以自己设置传入参数,一般都是手机号加随机的code。
func _main (args []*string) (_err error) {
   // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378661.html
   client, _err := CreateClient(tea.String("accessKeyId"), tea.String("accessKeySecret"))
   if _err != nil {
      return _err
   }

   sendSmsRequest := &dysmsapi20170525.SendSmsRequest{
     //这里是你自己申请的签名名
      SignName: tea.String("XXXX"),
    //申请的模板的SMS码
      TemplateCode: tea.String("XXXXXXX"),
        //绑定的测试手机号
      PhoneNumbers: tea.String("XXXXXXX"),
      //这里的code可以你自己通过随机函数生成一个纯数字的字符串
      TemplateParam: tea.String("{"code":"code"}"),
   }
   runtime := &util.RuntimeOptions{}
   tryErr := func()(_e error) {
      defer func() {
         if r := tea.Recover(recover()); r != nil {
            _e = r
         }
      }()
      // 复制代码运行请自行打印 API 的返回值
      //这一行就是发送短信到手机的代码
      _, _err = client.SendSmsWithOptions(sendSmsRequest, runtime)
      if _err != nil {
         return _err
      }

      return nil
   }()

   if tryErr != nil {
      var error = &tea.SDKError{}
      if _t, ok := tryErr.(*tea.SDKError); ok {
         error = _t
      } else {
         error.Message = tea.String(tryErr.Error())
      }
      // 如有需要,请打印 error
      _, _err = util.AssertAsString(error.Message)
      if _err != nil {
         return _err
      }
   }
   return _err
}
func main() {
   err := _main(tea.StringSlice(os.Args[1:]))
   if err != nil {
      panic(err)
   }
}