AspNetCore.Authentication.WeixinAuth

An ASP.NET Core authentication middleware: WeixinAuth for https://mp.weixin.qq.com (微信公众号/微信网页授权登录)


Keywords
Myvas, AspNetCore, Authentication, Weixin, Auth, Tencent, aspnet, authentication-middleware, middleware, netcoreapp30, netstandard20, nuget, oauth2, weixinauth
License
MIT
Install
Install-Package AspNetCore.Authentication.WeixinAuth -Version 2.1.505

Documentation

Myvas.AspNetCore.Authentication Family

1.QQConnect

An ASP.NET Core authentication middleware: QQConnect for https://connect.qq.com (腾讯QQ互联平台/QQ登录)

腾讯QQ互联平台/QQ登录:须腾讯QQ互联平台(connect.qq.com)账号,用户通过点击“QQ登录”图标按钮,或使用手机QQ扫码登入网站。

2.WeixinOpen

An ASP.NET Core authentication middleware: WeixinOpen for https://open.weixin.qq.com (微信开放平台/微信扫码登录)

微信开放平台/微信扫码登录:须微信开放平台(open.weixin.qq.com)账号,用户使用微信扫码并确认后登入网站。

3.WeixinAuth

An ASP.NET Core authentication middleware: WeixinAuth for https://mp.weixin.qq.com (微信公众平台/网页授权登录)

微信公众平台/网页授权登录,须微信公众平台(mp.weixin.qq.com)已认证的服务号(或测试号),用户在微信客户端访问网站时自动登入网站。

How to Use

Configure

    app.UseAuthentication();

ConfigureServices

1.QQConnect: 腾讯QQ互联平台(https://connect.qq.com) 创建应用(网站应用,移动应用),并指定网站回调地址(例如:https://www.myvas.com/signin-qqconnect ),记下AppId和AppKey。

services.AddAuthentication()
    .AddQQConnect(options => 
    {
        options.AppId = Configuration["QQConnect:AppId"];
        options.AppKey = Configuration["QQConnect:AppKey"];

        options.CallbackPath = "/signin-qqconnect"; //默认

        QQConnectScopes.TryAdd(options.Scope,
            QQConnectScopes.get_user_info,
            QQConnectScopes.list_album, //需要额外开通权限,暂未实现
            QQConnectScopes.upload_pic, //需要额外开通权限,暂未实现
            QQConnectScopes.do_like); //需要额外开通权限,暂未实现
    };

2.WeixinOpen: 微信开放平台(https://open.weixin.qq.com) 创建网站应用,配置授权回调域(例如:auth.myvas.com ),记下AppId,获取AppSecret。

services.AddAuthentication()
    .AddWeixinOpen(options => 
    {
        options.AppId = Configuration["WeixinOpen:AppId"];
        options.AppSecret = Configuration["WeixinOpen:AppSecret"];

        options.CallbackPath = "signin-weixinopen"; //默认
    };

3.WeixinAuth: 微信公众平台(https://mp.weixin.qq.com)

微信公众平台/网页授权获取用户信息,须在微信公众平台(mp.weixin.qq.com)上开通服务号,并认证。 订阅号无网页授权权限,即使是已认证的订阅号也不行! 用户在微信客户端中访问网页时,可以通过此组件Challenge后获取用户的OpenId或UnionId,据此可以识别用户。

(1)微信公众平台-测试账号/开发/开发者工具/公众平台测试号/...

  • 开通功能:网页服务/网页授权获取用户基本信息。
  • 设置好授权回调页面域名:例如,auth.myvas.com。

(2)微信公众平台-已认证服务号/开发/接口权限/...

  • 开通功能:网页服务/网页授权获取用户基本信息。
  • 设置好网页授权域名:例如,auth.myvas.com。
  • 将文件MP_verify_xxxxxxxxx.txt上传至wwwroot目录下。
services.AddAuthentication()
    .AddWeixinAuth(options => 
    {
        options.AppId = Configuration["WeixinAuth:AppId"];
        options.AppSecret = Configuration["WeixinAuth:AppSecret"];

        options.SilentMode = false; // default is true
    };
说明:

(1)同一用户在同一微信公众号即使重复多次订阅/退订,其OpenId也不会改变。

(2)同一用户在不同微信公众号中的OpenId是不一样的。

(3)若同时运营了多个微信公众号,可以在微信开放平台上开通开发者账号,并在“管理中心/公众账号”中将这些公众号添加进去,就可以获取到同一用户在这些公众号中保持一致的UnionId。

Dev

Demo Online

alt https://demo.auth.myvas.com Weixin QrCode