最近因为项目需要,使用了阿里云的验证码产品:https://help.aliyun.com/zh/captcha/

对服务端来说其实是很简单的一个接口,官方也提供了示例:

// This file is auto-generated, don't edit it. Thanks.
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Tea;
using Tea.Utils;
namespace AlibabaCloud.SDK.Sample
    public class Sample 
        public static string GetEnvProperty(string propertyName)
            // TODO 请实现非明文硬编码方式获取您的AccessKey ID 和 AccessKey Secret,比如阿里云Credentials工具(参见https://help.aliyun.com/document_detail/378659.html),或其他您的系统中安全的获取方式。
            return "null";
        public static async Task<string> GetEnvPropertyAsync(string propertyName)
            // TODO 请实现非明文硬编码方式获取您的AccessKey ID 和 AccessKey Secret,比如阿里云Credentials工具(参见https://help.aliyun.com/document_detail/378659.html),或其他您的系统中安全的获取方式。
            return "null";
        public static void Main(string[] args)
            // ====================== 1. 初始化配置 ====================== 
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
            // 设置您的AccessKey ID 和 AccessKey Secret。
            // getEnvProperty只是个示例方法,需要您自己实现AccessKey ID 和 AccessKey Secret安全的获取方式。
            config.AccessKeyId = GetEnvProperty("ACCESS_KEY_ID");
            config.AccessKeySecret = GetEnvProperty("ACCESS_KEY_SECRET");
            //设置请求地址
            config.Endpoint = "captcha.cn-shanghai.aliyuncs.com";
            // 设置连接超时为5000毫秒
            config.ConnectTimeout = 5000;
            // 设置读超时为5000毫秒
            config.ReadTimeout = 5000;
            // ====================== 2. 初始化客户端(实际生产代码中建议复用client) ====================== 
            AlibabaCloud.SDK.Captcha20230305.Client client = new AlibabaCloud.SDK.Captcha20230305.Client(config);
            // 创建APi请求
            AlibabaCloud.SDK.Captcha20230305.Models.VerifyIntelligentCaptchaRequest request = new AlibabaCloud.SDK.Captcha20230305.Models.VerifyIntelligentCaptchaRequest();
            // 本次验证的场景ID,建议传入,防止前端被篡改场景
            request.SceneId = "本次验证的场景ID";
            // 前端传来的验证参数 CaptchaVerifyParam
            request.CaptchaVerifyParam = "前端传来的验证参数 CaptchaVerifyParam";
            // ====================== 3. 发起请求) ====================== 
                AlibabaCloud.SDK.Captcha20230305.Models.VerifyIntelligentCaptchaResponse resp = client.VerifyIntelligentCaptcha(request);
                // 建议使用您系统中的日志组件,打印返回
                // 获取验证码验证结果(请注意判空),将结果返回给前端。出现异常建议认为验证通过,优先保证业务可用,然后尽快排查异常原因。
                bool? captchaVerifyResult = resp.Body.Result.VerifyResult;
                // 原因code
                string captchaVerifyCode = resp.Body.Result.VerifyCode;
            catch (TeaException error)
                // 建议使用您系统中的日志组件,打印异常
                // 出现异常建议认为验证通过,优先保证业务可用,然后尽快排查异常原因。
                bool? captchaVerifyResult = true;
            catch (Exception _error)
                TeaException error = new TeaException(new Dictionary<string, object>
                    { "message", _error.Message }
                // 建议使用您系统中的日志组件,打印异常
                // 出现异常建议认为验证通过,优先保证业务可用,然后尽快排查异常原因。
                bool? captchaVerifyResult = true;

上面的示例,使用子账号,添加了对应的权限,其实是没问题的,但是使用阿里云Credentials工具,用临时凭证的话,就会出问题,我遇到的报错是:

code: 400, Specified header x-acs-security-token is mandatory for this action. request id: 487F69EC-20A5-5566-A753-A45F921B5994

我是创建了一个角色,添加了对应的权限后,调用STS服务的AssumeRole接口获取的临时凭证,需要在官方示例中添加一行代码即可:

//临时凭证需要token  官方示例没有给出  临时凭证的token
config.SecurityToken = token;

之前研究了半天, 一直以为是request请求里面添加,没想到是生成client的时候就要。

在工作自动化过程中,有需要使用Python的pdfkit包将URL或者str等转换成pdf文件,今天使用如下代码在将str转换为pdf, 代码如下: options = { 'page-size':'Letter','margin-top':'0.75in','margin-right':'0.75in', 'margin-bottom':'0.75in','margin-left':'0.75in','encoding':"UTF-8", 'custom-header': [('Accept-Enco
最近做项目修改邮箱的部分,修改邮箱之前需要先给原邮箱发送验证码,验证成功后才能更改新的邮箱。项目中给邮箱或者手机发验证码用的是阿里云的服务AliEmailpublic class AliEmail extends AbstractEmail implements Email { private static final String ACCESS_KEY_ID; priva...
java.util.concurrent.ExecutionException: com.aliyun.sdk.gateway.pop.exception.PopClientException
使用阿里云短信服务发送验证码 1.查看阿里云短信服务文档使用指引:https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11174283.4.1.8d482c42vJiVOI ,开通阿里云短信服务 2.获取到 AccessKey IDAccessKey Secret AccessKey ID 用于标识用户。 AccessKey Secret 是用来验证用户的密钥。Acce
python_oracle:cx_Oracle模块 import cx_Oracle as oracle conn = oracle.connect(‘laosnnghju/xydjAJKD123355a@...:1521/zawbsc2’) cursor = conn.cursor() SQL_Select = ‘select * from DIM_ZNFX_COMPANY_REL t’ cur...
您好!要在C#客户端中连接阿里云MQTT,您可以按照以下步骤进行操作: 1. 首先,确保您已经创建了阿里云的MQTT实例,并获取到了对应的连接信息,包括服务器地址、端口号、用户名和密码等。 2. 在C#项目中,您可以使用第三方的MQTT客户端库来实现连接和通信。其中,M2Mqtt是一个常用的选择,您可以使用NuGet包管理器来安装它。 3. 安装完M2Mqtt后,在您的C#代码中引入M2Mqtt命名空间: ```csharp using System; using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Messages; 4. 创建一个MqttClient实例,并使用阿里云提供的连接信息进行初始化: ```csharp string server = "<阿里云MQTT服务器地址>"; int port = <阿里云MQTT服务器端口>; string clientId = "<客户端ID>"; string username = "<用户名>"; string password = "<密码>"; MqttClient client = new MqttClient(server, port, false, null, null, MqttSslProtocols.None); client.Connect(clientId, username, password); 请将上述代码中的`<阿里云MQTT服务器地址>`、`<阿里云MQTT服务器端口>`、`<客户端ID>`、`<用户名>`和`<密码>`替换为您的实际信息。 5. 连接成功后,您可以订阅和发布MQTT消息。例如,订阅一个主题: ```csharp string topic = "<要订阅的主题>"; client.Subscribe(new string[] { topic }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE }); 请将上述代码中的`<要订阅的主题>`替换为您希望订阅的实际主题。 6. 同样地,您也可以发布一条消息到指定的主题: ```csharp string topic = "<要发布的主题>"; string message = "<要发布的消息>"; client.Publish(topic, Encoding.UTF8.GetBytes(message), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false); 请将上述代码中的`<要发布的主题>`和`<要发布的消息>`替换为您实际需要发布的内容。 以上就是连接阿里云MQTT的基本步骤。您可以根据实际需求进行扩展和优化。希望对您有所帮助!如有更多问题,请继续提问。