一个实现微信登录、微信用户信息存储、微信服务器管理、微信第三方平台等高级功能的Abp应用模块组

大家好,我是宝弟!

今天给大家推荐一个基于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 项目,以创建新的授权客户端。

使用

小程序登录

  1. 使用 (POST) 接口进行微信登录,留意 LoginInput 的注释说明。/api/wechat-management/mini-programs/login/login

  2. 使用 (POST) 接口对 AccessToken 续期。/api/wechat-management/mini-programs/login/refresh

  3. 在有需要时,使用 (PUT) 接口对存储的微信用户信息进行更新。(见 #20/api/wechat-management/mini-programs/user-info)

小程序授权 Razor 页面登录

  1. 配置用于微信登录的小程序的 Name,默认为,参考本模块设置。Default

  2. 重写登录页,在页面中插入 WeChatMiniProgramPcLoginWidget,重写方法参考 官方文档 和 本模块示例。

  3. 微信扫码后(默认配置下,会打开小程序首页),确保小程序本身已完成用户登录,小程序需要将扫码获得的 scene 作为 token 参数传入 接口。/api/wechat-management/mini-programs/login/authorize-pc

  4. 完成上一步后,Razor 登录页将自动完成登录并跳转。
     

系统截图

一个实现微信登录、微信用户信息存储、微信服务器管理、微信第三方平台等高级功能的Abp应用模块组

一个实现微信登录、微信用户信息存储、微信服务器管理、微信第三方平台等高级功能的Abp应用模块组

一个实现微信登录、微信用户信息存储、微信服务器管理、微信第三方平台等高级功能的Abp应用模块组

一个实现微信登录、微信用户信息存储、微信服务器管理、微信第三方平台等高级功能的Abp应用模块组

 资源获取方式 

https://github.com/EasyAbp/WeChatManagement