abp对接微信、小程序等

1.Online Demo We have launched an online demo for this module:

2.Installation

这里的包注意一下要区分不同的项目分别引用。注意包版本号和项目的匹配。

3.Add DependsOn(typeof(WeChatManagementMiniProgramsXxxModule)) attribute to configure the module dependencies. 这里注意,每个引入了nuget包的有module的都要添加:比如application层:typeof(WeChatManagementMiniProgramsApplicationModule) 4.Add builder.ConfigureWeChatManagementCommon(); and builder.ConfigureWeChatManagementMiniPrograms(); to the OnModelCreating() method in MyProjectMigrationsDbContext.cs. 5. Add EF Core migrations and update your database

dotnet ef migrations add wechat
{
          
   
  "WeChatManagement": {
          
   
    "MiniPrograms": {
          
   
      "AuthServer": {
          
   
        "Authority": "https://localhost:44380",
        "ClientId": "MyProjectName_WeChatMiniProgram",
        "ClientSecret": "1q2w3e*"
      }
    }
  }
}
  1. 在 OpenIddictDataSeedContributor 中增加新的客户端 Data Seed (你也可以使用 IDS4): 在CreateApplicationsAsync()里面添加
// 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<string>
        {
          
   
            OpenIddictConstants.GrantTypes.RefreshToken,
            WeChatMiniProgramConsts.GrantType
        },
        scopes: commonScopes
    );
}

8.在 OpenIddictDataSeedContributor 中找到

if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials)
{
          
   
    application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials);
}

在下面增加

if (grantType == WeChatMiniProgramConsts.GrantType)
{
          
   
    application.Permissions.Add($"gt:{
            
     WeChatMiniProgramConsts.GrantType}");
}

9.在 DbMigrator 项目的 appsettings.json 中增加:

{
          
   
  "OpenIddict": {
          
   
    "Applications": {
          
   
      "MyProjectName_WeChatMiniProgram": {
          
   
        "ClientId": "MyProjectName_WeChatMiniProgram",
        "ClientSecret": "1q2w3e*"
      }
    }
  }
}

10.运行 DbMigrator 项目,以创建新的授权客户端。

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

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

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

经验分享 程序员 微信小程序 职场和发展