如何将WebApi项目与企业微信和公众号完美集成?

摘要:前言 很久没写文章了,现在有了AI,其实已经不怎么需要写文章,反正不懂就问AI嘛。 不过AI总是有盲区的,就比如国内的微信开发。 微信的文档是公认的烂,而且经常悄咪咪改接口又不更新文档,所以AI对微信开发的API其实不怎么熟悉,经常给出一些
前言 很久没写文章了,现在有了AI,其实已经不怎么需要写文章,反正不懂就问AI嘛。 不过AI总是有盲区的,就比如国内的微信开发。 微信的文档是公认的烂,而且经常悄咪咪改接口又不更新文档,所以AI对微信开发的API其实不怎么熟悉,经常给出一些错误的回复。 本文记录一下最近我使用 C# WebApi 项目接入企业微信和公众号的过程,主要是用到自动回复功能。 前置工作 依赖库 我用到了 SKIT.FlurlHttpClient.Wechat 这个系列的库:https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat 原本想直接用 Flurl 对接的,毕竟现在手里有了锤子(AI),看啥都是钉子,啥都想造轮子。 不过搜了一下我的收藏夹,发现有这个项目,封装了微信的大部分接口,那还要啥自行车,直接用就完事儿了。 其中: 企业微信:SKIT.FlurlHttpClient.Wechat.Work 公众号:SKIT.FlurlHttpClient.Wechat.Api 微信配置信息 需要准备这些配置信息: 企业微信: public class WechatWorkOptions { public string CorpId { get; set; } = string.Empty; // 应用ID public int AgentId { get; set; } // 应用密钥 public string Secret { get; set; } = string.Empty; // 回调 Token public string CallbackToken { get; set; } = string.Empty; // 回调 EncodingAESKey public string CallbackEncodingAESKey { get; set; } = string.Empty; } 公众号: public class WechatApiClientOptions { public string AppId { get; set; } = string.Empty; public string AppSecret { get; set; } = string.Empty; public string CallbackToken { get; set; } = string.Empty; public string CallbackEncodingAESKey { get; set; } = string.Empty; } 注册服务 // 企业微信 builder.Services.AddSingleton<WechatWorkClient>(sp => { var options = sp.GetRequiredService<IOptions<WechatWorkOptions>>().Value; return WechatWorkClientBuilder.Create(options).Build(); }); // 公众号 builder.Services.AddSingleton<WechatApiClient>(sp => { var options = sp.GetRequiredService<IOptions<WechatMpOptions>>().Value; return WechatApiClientBuilder.Create(options).Build(); }); 准备工作就搞定了。 管理token 微信的接口都需要用 AccessToken 才能调用,但微信又不想开发者每次都去请求获取token,所以只能获取一次然后自己保存了。 C# 可以用 IMemoryCache 组件,很方便的管理这些临时存储的数据;Django框架也有内置的cache机制,其他语言框架可以用Redis这类NoSQL数据库来存储。扯远了,本文还是介绍C#的。
阅读全文