一、Netnr.Login组件介绍
Netnr.Login 是一个基于 C# 开源的第三方 OAuth2 授权登录整合库,采用 MIT License 授权。它支持多种主流第三方平台的登录授权功能,包括 QQ、微信开放平台(Weixin)、微信公众平台(WeixinMP)、微博(Weibo)、淘宝(Taobao)、支付宝(Alipay)、钉钉(DingTalk)、飞书(Feishu)、华为(Huawei)、小米(Xiaomi)、AtomGit、码云(Gitee)、GitHub、GitLab、微软(Microsoft)、StackOverflow 等。
功能特点
-
快速接入:通过简单的配置和集成,即可实现第三方平台的登录授权功能。
-
灵活的配置:支持自定义构建请求参数,开发者可以根据需要调整授权过程。
-
详细的步骤支持:提供了从授权码获取到用户信息获取的完整步骤支持,方便开发者调试和扩展。
-
广泛的平台支持:涵盖了国内外多个主流的第三方登录平台。
使用方法
-
三方登录并跳转授权页面:通过
LoginTo.EntryOfStep
方法,可以快速生成授权链接并跳转到第三方平台的授权页面。 -
三方登录回调:在用户授权后,通过回调接口接收授权码,并调用
LoginTo.Entry
或LoginTo.EntryOfSteps
方法获取用户信息。 -
逐步处理:开发者可以逐步处理授权过程中的每个步骤,例如获取访问令牌、刷新令牌、获取用户信息等。
项目地址
-
GitHub:GitHub - netnr/Netnr.Login: 第三方 OAuth2 授权登录,QQ、微信开放平台(Weixin)、微信公众平台(WeixinMP)、微博(Weibo)、淘宝(Taobao)、支付宝(Alipay)、钉钉(DingTalk)、飞书(Feishu)、华为(Huawei)、小米(Xiaomi)、AtomGit、码云(Gitee)、GitHub、GitLab、微软(Microsoft )、StackOverflow、谷歌(Google)、ORCID
-
Gitee:Netnr.Login: 第三方 OAuth2 授权登录
二、maui开发如何快速对接
在 .NET MAUI 应用中快速接入 Netnr.Login,可以通过以下步骤实现:
1. 配置 Netnr.Login
Netnr.Login 是一个基于 C# 的第三方 OAuth2 授权登录整合库,支持多种第三方平台的登录授权。首先,需要在项目中引入 Netnr.Login 库。可以通过 NuGet 包管理器安装 Netnr.Login。
2. 配置授权平台
在 MAUI 应用中,需要配置支持的第三方登录平台的客户端 ID 和回调地址。例如,对于 GitHub 登录,需要在 GitHub 开发者平台注册应用,获取客户端 ID 和回调地址。
3. 跳转到授权页面
使用 Netnr.Login 提供的 LoginTo.EntryOfStep
方法,可以生成授权链接并跳转到第三方平台的授权页面。在 MAUI 应用中,可以通过 Launcher
打开授权链接:
csharp复制
using Netnr.Login;
using System;public async void OpenAuthPage(LoginWhich loginType)
{var authResult = LoginTo.EntryOfStep<object, object>(loginType, LoginStep.Authorize, stateCall: (state) => $"login_{state}");if (!string.IsNullOrEmpty(authResult.Raw)){await Launcher.OpenAsync(new Uri(authResult.Raw));}
}
4. 处理授权回调
在 MAUI 应用中,需要处理第三方平台的授权回调。可以通过配置回调 URI 和监听回调事件来实现。例如,对于 GitHub 登录,回调 URI 可以配置为 myapp://callback
。
在 MAUI 应用中,监听回调事件并调用 Netnr.Login 的 LoginTo.Entry
方法获取用户信息:
csharp复制
using Netnr.Login;
using System;public async void HandleAuthCallback(string code)
{var authResult = new AuthorizeResult { Code = code };var userInfo = LoginTo.Entry(LoginWhich.GitHub, authResult);// 处理用户信息
}
5. 配置平台特定的回调处理
对于 Android 和 Windows 平台,需要进行特定的配置以处理回调:
-
Android:创建一个继承自
WebAuthenticatorCallbackActivity
的活动,并在AndroidManifest.xml
中配置回调 URI。 -
Windows:在
Package.appxmanifest
中添加协议扩展,并在App.xaml.cs
中调用Activator.Default.CheckRedirectionActivation()
。
示例代码
以下是一个完整的示例代码,展示如何在 MAUI 应用中接入 Netnr.Login:
csharp复制
using Netnr.Login;
using System;
using System.Threading.Tasks;public class AuthManager
{public async Task OpenAuthPageAsync(LoginWhich loginType){var authResult = LoginTo.EntryOfStep<object, object>(loginType, LoginStep.Authorize, stateCall: (state) => $"login_{state}");if (!string.IsNullOrEmpty(authResult.Raw)){await Launcher.OpenAsync(new Uri(authResult.Raw));}}public async Task HandleAuthCallbackAsync(string code){var authResult = new AuthorizeResult { Code = code };var userInfo = LoginTo.Entry(LoginWhich.GitHub, authResult);// 处理用户信息Console.WriteLine(userInfo.ToJson(true));}
}
通过以上步骤,可以在 .NET MAUI 应用中快速接入 Netnr.Login,实现第三方 OAuth2 授权登录