基于 C# 开源的Netnr.Login组件库,maui开发实现 QQ、微信等多种主流第三方平台的登录授权

一、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.EntryLoginTo.EntryOfSteps 方法获取用户信息。

  • 逐步处理:开发者可以逐步处理授权过程中的每个步骤,例如获取访问令牌、刷新令牌、获取用户信息等。

项目地址

二、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 授权登录

相关推荐
落寞的星星9 小时前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#
修己xj10 小时前
告别排版噩梦:一个开源SKILL,让我彻底告别公众号排版的“噩梦”
开源
聪慧的水蜜桃13 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·c#
hixiong12318 小时前
TensorRT转换工具分享
人工智能·计算机视觉·ai·c#
GitCode官方18 小时前
开源鸿蒙跨平台直播| RN 三方库开源鸿蒙标准化适配实战分享
华为·开源·harmonyos·atomgit
梦梦代码精18 小时前
LikeShop 前后端架构升级对比总白皮书——从传统商城架构到高性能多端统一体系
docker·架构·开源
shujudang19 小时前
深入数据架构选型:开源埋点系统 vs 企业级增长分析平台的工程与业务考量
架构·数据分析·开源
莫生灬灬20 小时前
DY联系人聊天Web面板支持获取联系人/聊天记录/发送消息
前端·chrome·websocket·c#
江湖有缘20 小时前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
江华森21 小时前
【玩转 AtomCode】源码编译与架构解析:深入理解开源 AI 编码代理的内核设计
架构·开源