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*" } } } }
- 在 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 登录页将自动完成登录并跳转。