Netnr.Login 5.4.0

dotnet add package Netnr.Login --version 5.4.0
                    
NuGet\Install-Package Netnr.Login -Version 5.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Netnr.Login" Version="5.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Netnr.Login" Version="5.4.0" />
                    
Directory.Packages.props
<PackageReference Include="Netnr.Login" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Netnr.Login --version 5.4.0
                    
#r "nuget: Netnr.Login, 5.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Netnr.Login&version=5.4.0
                    
Install Netnr.Login as a Cake Addin
#tool nuget:?package=Netnr.Login&version=5.4.0
                    
Install Netnr.Login as a Cake Tool

Netnr.Login

第三方 OAuth2 授权登录,QQ、微信开放平台(Weixin)、微信公众平台(WeixinMP)、微博(Weibo)、淘宝(Taobao)、支付宝(Alipay)、钉钉(DingTalk)、飞书(Feishu)、华为(Huawei)、小米(Xiaomi)、AtomGit、码云(Gitee)、GitHub、GitLab、微软(Microsoft )、StackOverflow、谷歌(Google)、Facebook、ORCID

安装 (NuGet)

Install-Package Netnr.Login

NuGet | Netnr.Login

支持第三方登录

<table> <tr><th>三方</th><th>参考文档</th><th>应用申请(已登录)</th></tr> <tr> <td><img src="https://gs.zme.ink/static/login/qq.svg" height="30" title="QQ"></td> <td><a target="_blank" href="https://wiki.connect.qq.com/准备工作_oauth2-0">参考文档</a></td> <td><a target="_blank" href="https://connect.qq.com/manage.html">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/weixin.svg" height="30" title="微信开放平台/Weixin"></td> <td><a target="_blank" href="https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html">参考文档</a></td> <td><a target="_blank" href="https://open.weixin.qq.com">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/weixinmp.svg" height="30" title="微信公众平台/WeixinMP"></td> <td><a target="_blank" href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html">参考文档</a></td> <td><a target="_blank" href="https://mp.weixin.qq.com">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/weibo.svg" height="30" title="微博/Weibo"></td> <td><a target="_blank" href="https://open.weibo.com/wiki/Connect/login">参考文档</a></td> <td><a target="_blank" href="https://open.weibo.com/apps">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/taobao.svg" height="30" title="淘宝"></td> <td><a target="_blank" href="https://open.taobao.com/doc.htm?docId=118&docType=1&spm=a219a.7395903.0.0.6a4239715JvKjW">参考文档</a></td> <td><a target="_blank" href="https://console.open.taobao.com/">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/alipay.svg" height="30" title="支付宝/Alipay"></td> <td><a target="_blank" href="https://opendocs.alipay.com/open/263/105809">参考文档</a></td> <td><a target="_blank" href="https://open.alipay.com/develop/manage">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/dingtalk.svg" height="30" title="钉钉/DingTalk"></td> <td><a target="_blank" href="https://open.dingtalk.com/document/isvapp/obtain-identity-credentials">参考文档</a></td> <td><a target="_blank" href="https://open-dev.dingtalk.com/fe/app">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/feishu.svg" height="30" title="飞书/Feishu"></td> <td><a target="_blank" href="https://open.feishu.cn/document/sso/web-application-sso/login-overview">参考文档</a></td> <td><a target="_blank" href="https://open.feishu.cn/app">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/huawei.svg" height="30" title="华为/Huawei"></td> <td><a target="_blank" href="https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/web-dev-guide-0000001050050895">参考文档</a></td> <td><a target="_blank" href="https://developer.huawei.com/consumer/cn/console/service/AppService">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/xiaomi.svg" height="30" title="小米/Xiaomi"></td> <td><a target="_blank" href="https://dev.mi.com/console/doc/detail?pId=707">参考文档</a></td> <td><a target="_blank" href="https://dev.mi.com/passport/oauth2/applist">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/atomgit.svg" height="30" title="AtomGit"></td> <td><a target="_blank" href="https://docs.atomgit.com/oauth/">参考文档</a></td> <td><a target="_blank" href="https://atomgit.com">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/gitee.svg" height="30" title="码云/Gitee"></td> <td><a target="_blank" href="https://gitee.com/api/v5/oauth_doc">参考文档</a></td> <td><a target="_blank" href="https://gitee.com/oauth/applications">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/github.svg" height="30" title="GitHub"></td> <td><a target="_blank" href="https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps">参考文档</a></td> <td><a target="_blank" href="https://github.com/settings/developers">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/gitlab.svg" height="30" title="GitLab"></td> <td><a target="_blank" href="https://docs.gitlab.com/api/oauth2/">参考文档</a></td> <td><a target="_blank" href="https://gitlab.com/oauth/applications">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/microsoft.svg" height="30" title="微软/Microsoft"></td> <td><a target="_blank" href="https://learn.microsoft.com/zh-cn/entra/identity-platform/v2-oauth2-auth-code-flow">参考文档</a></td> <td><a target="_blank" href="https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/stackoverflow.svg" height="30" title="Stack Overflow"></td> <td><a target="_blank" href="https://api.stackexchange.com">参考文档</a></td> <td><a target="_blank" href="https://stackapps.com/apps/oauth/register">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/google.svg" height="30" title="谷歌/Google"></td> <td><a target="_blank" href="https://developers.google.com/identity/protocols/oauth2/web-server">参考文档</a></td> <td><a target="_blank" href="https://console.developers.google.com/apis/credentials">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/facebook.svg" height="30" title="Facebook"></td> <td><a target="_blank" href="https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/">参考文档</a></td> <td><a target="_blank" href="https://developers.facebook.com/apps/">应用申请</a></td> </tr> <tr> <td><img src="https://gs.zme.ink/static/login/orcid.svg" height="30" title="ORCID"></td> <td><a target="_blank" href="https://github.com/ORCID/ORCID-Source/blob/main/orcid-web/ORCID_AUTH_WITH_OPENID_CONNECT.md">参考文档</a></td> <td><a target="_blank" href="https://orcid.org/developer-tools">应用申请</a></td> </tr>
</table>

变更

v5 版本全面重写,不兼容以前,调用方法更简单简洁
移除 Newtonsoft.Json 组件,改为 System.Text.Json
微软含新旧模式(注意新旧版本标识不相同)
钉钉含新旧模式(新:企业内部开发 H5微应用;旧:移动应用接入 扫码登录)

next

新增 Facebook
更新 支付宝签名 RSACryptoServiceProvider 改为 RSA ,消除 CA1416 提醒

2024-10-18

新增 华为 小米
修复 微博获取唯一标识的错误,v5旧版本微博都有问题 严重缺陷
调整 PublicUserResult 类属性字段为 OpenId(有值,应用唯一)、UnionId(可能有值,跨应用唯一)
新增 PublicUserResult 类方法 GetId() => UnionId ?? OpenId;

2024-10-17

新增 AtomGit、ORCID、GitLab
删除 字段 PublicUserResult.Gender
修改 字段 PublicUserResult.IntroBio

使用

v4 旧版本使用示例 Netnr.Demo/Controllers/LoginController.cs

极简调用,详情参考 Netnr.Demo/Controllers/AccountController.cs

// 初始化配置,推荐使用 LoginTo.InitConfig 方法读取配置

QQ.AppId = "";
QQ.AppKey = "";
QQ.Redirect_Uri = "https://localhost/account/authcallback/qq";
/// <summary>
/// 登录、绑定
/// </summary>
/// <param name="id">哪家</param>
/// <returns></returns>
[HttpGet]
public IActionResult Auth([FromRoute] LoginWhich? id)
{
    if (id.HasValue)
    {
        //根据 state 字段加前缀 login 或 bind 来区分
        DocModel authResult = LoginTo.EntryOfStep<object, object>(id.Value, LoginStep.Authorize, stateCall: (state) => $"login_{state}");
        if (!string.IsNullOrEmpty(authResult.Raw))
        {
            return Redirect(authResult.Raw);
        }
    }

    return BadRequest();
}
/// <summary>
/// 回调
/// </summary>
/// <param name="id">哪家</param>
/// <param name="authResult">接收授权码</param>
/// <returns></returns>
[HttpGet]
public IActionResult AuthCallback([FromRoute] LoginWhich id, AuthorizeResult authResult)
{
    //极简拿到最终用户信息,参考详情可得到步骤信息
    var publicUser = LoginTo.Entry(id, authResult);

    var result = publicUser.ToJson(true);
    Console.WriteLine(result);

    return Ok(result);
}

注意

默认构建的授权调整链接是基于 PC,而有些是区分移动端、扫码等,需要根据客户端来源构建对应的授权跳转链接。

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
5.4.0 51 5/24/2025
5.3.0 217 10/18/2024
4.0.1 864 5/18/2021
4.0.0 660 11/28/2020
3.6.0 600 10/7/2020
3.5.2 1,011 1/18/2020
3.5.1 667 12/26/2019
3.5.0 663 11/12/2019
3.4.1 575 11/11/2019
3.4.0 574 11/9/2019
3.3.0-rc1 485 10/16/2019
3.2.0-beta1 530 9/20/2019
3.1.0 1,030 3/26/2019
3.0.1 666 3/6/2019
2.0.0 939 10/18/2018
1.0.0 854 10/9/2018

Add Facebook