大家好,我是宝弟!
今天给大家推荐一个基于EasyAbp.Abp.WeChat模块实现微信登录、微信用户信息存储、微信服务器管理、微信第三方平台等高级功能的Abp应用模块组WeChatManagement。
目前实现了Abp 小程序管理模块,提供小程序登录、用户个人信息记录、小程序微信服务器等功能,自动适应微信开放平台规则,与微信第三方平台模块轻松衔接。.
安装依赖
- EasyAbp.WeChatManagement.MiniPrograms.Application 
- EasyAbp.WeChatManagement.MiniPrograms.Application.Contracts 
- (2选1) EasyAbp.WeChatManagement.MiniPrograms.Domain.OpenIddict 
- (2选1) EasyAbp.WeChatManagement.MiniPrograms.Domain.Ids4 
- EasyAbp.WeChatManagement.MiniPrograms.Domain.Shared 
- EasyAbp.WeChatManagement.MiniPrograms.EntityFrameworkCore 
- EasyAbp.WeChatManagement.MiniPrograms.HttpApi 
- EasyAbp.WeChatManagement.MiniPrograms.HttpApi.Client 
- (Optional) EasyAbp.WeChatManagement.MiniPrograms.MongoDB 
- (Optional) EasyAbp.WeChatManagement.MiniPrograms.Web 
- (Optional) EasyAbp.Abp.WeChat.Common.SharedCache.StackExchangeRedis (重要!如果开发/沙盒/线上均使用了相同的微信AppId,请安装此模块,使用中立缓存共享 AccessToken: 
配置模块依赖项:
DependsOn(typeof(WeChatManagementMiniProgramsXxxModule)))
MyProjectMigrationsDbContext.cs中添加:
builder.ConfigureWeChatManagementCommon();builder.ConfigureWeChatManagementMiniPrograms();OnModelCreating()
添加 EF Core 迁移并更新数据库。
在 Web/Host 项目的appsettings.json 中增加微信登录授权服务器配置:
{"WeChatManagement": {"MiniPrograms": {"AuthServer": {"Authority": "https://localhost:44380","ClientId": "MyProjectName_WeChatMiniProgram","ClientSecret": "1q2w3e*"}}}}
在 OpenIddictDataSeedContributor 中增加新的客户端
// WeChat MiniProgramvar weChatMiniProgramClientId =configurationSection["MyProjectName_WeChatMiniProgram:ClientId"];if (!weChatMiniProgramClientId.IsNullOrWhiteSpace()){await CreateApplicationAsync(name: weChatMiniProgramClientId,type: OpenIddictConstants.ClientTypes.Confidential,consentType: OpenIddictConstants.ConsentTypes.Implicit,displayName: "WeChat Mini-program",secret: configurationSection["MyProjectName_WeChatMiniProgram:ClientSecret"] ?? "1q2w3e*",grantTypes: new List<string>{OpenIddictConstants.GrantTypes.RefreshToken,WeChatMiniProgramConsts.GrantType},scopes: commonScopes);}
在 OpenIddictDataSeedContributor 中找到
if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials){application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials);}
在下面增加
if (grantType == WeChatMiniProgramConsts.GrantType){application.Permissions.Add($"gt:{WeChatMiniProgramConsts.GrantType}");}
在 DbMigrator 项目的 appsettings.json 中增加:
{"OpenIddict": {"Applications": {"WeChatManagementSample_WeChatMiniProgram": {"ClientId": "MyProjectName_WeChatMiniProgram","ClientSecret": "1q2w3e*"}}}}
运行 DbMigrator 项目,以创建新的授权客户端。
小程序登录
- 使用 (POST) 接口进行微信登录,留意 LoginInput 的注释说明。 - /api/wechat-management/mini-programs/login/login
- 使用 (POST) 接口对 AccessToken 续期。 - /api/wechat-management/mini-programs/login/refresh
- 在有需要时,使用 (PUT) 接口对存储的微信用户信息进行更新。(见 #20 - /api/wechat-management/mini-programs/user-info)
小程序授权 Razor 页面登录
- 配置用于微信登录的小程序的 Name,默认为,参考本模块设置。 - Default
- 重写登录页,在页面中插入 WeChatMiniProgramPcLoginWidget,重写方法参考 官方文档 和 本模块示例。 
- 微信扫码后(默认配置下,会打开小程序首页),确保小程序本身已完成用户登录,小程序需要将扫码获得的 scene 作为 token 参数传入 接口。 - /api/wechat-management/mini-programs/login/authorize-pc
- 完成上一步后,Razor 登录页将自动完成登录并跳转。 
 




资源获取方式
https://github.com/EasyAbp/WeChatManagement
