一个实现微信登录、微信用户信息存储、微信服务器管理、微信第三方平台等高级功能的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 MiniProgram
var 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
        {
            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 登录页将自动完成登录并跳转。

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

github 地址

https://github.com/EasyAbp/WeChatManagement


来源:DotNet 宝藏库

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...