当前位置: 首页 > news >正文

.NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth

前言

我相信做开发的同学应该都对接过各种各样的第三方平台的登录授权,来获取用户信息(如:微信登录、支付宝登录、QQ登录、GitHub登录等等)。今天给大家推荐一个.NET开源好用的、全面的、方便第三方登录组件集合框架:MrHuo.OAuth。

图片

项目介绍

MrHuo.OAuth是.NET项目集成OAuth2登录最全面的、最方便的框架,集成了国内外大部分平台(.NET Core 项目或 .NET Framework 4.6 项目均可使用)。

已支持的第三方平台

  • 百度

  • 微信公众号

  • Gitlab

  • Gitee

  • Github

  • 华为

  • Coding.net

  • 新浪微博

  • 支付宝

  • OSChina

  • 迅雷

  • 钉钉内登录

  • 钉钉扫码登录

  • QQ

  • 微软

  • 小米

  • StackOverflow

  • Facebook

  • Google

项目源码

图片

图片

支付宝登录部分示例代码

这里是展示部分示例代码,详细代码前往源码查看。

开始之前请阅读支付宝对接文档

先熟悉流程,对接起来事半功倍。

  • https://opendocs.alipay.com/open/284/106001

示例代码

    /// <summary>/// 支付宝回调URL:/// https://oauthlogin.net/oauth/alipaycallback?app_id=2021002122645005&source=alipay_wallet&userOutputs=auth_user&scope=auth_user&alipay_token=&auth_code=2c58e763fdca4fb6b1f5a5bf4d26WA05/// https://github.com/alipay/alipay-easysdk/tree/master/csharp/// </summary>public class AlipayOAuth : OAuthLoginBase<AlipayAccessTokenModel, AlipayUserInfoModel>{private readonly AlipayApiRequest alipayApiRequest;public AlipayOAuth(OAuthConfig oauthConfig, string privateRSAKey, string publicRSAKey, string encryptKey) : base(oauthConfig){alipayApiRequest = new AlipayApiRequest(){PrivateRSAKey = privateRSAKey,PublicRSAKey = publicRSAKey,AppId = oauthConfig.AppId};}protected override string AuthorizeUrl => "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm";protected override string AccessTokenUrl => throw new NotImplementedException();protected override string UserInfoUrl => throw new NotImplementedException();protected override Dictionary<string, string> BuildAuthorizeParams(string state){return new Dictionary<string, string>(){["response_type"] = "code",["app_id"] = $"{oauthConfig.AppId}",["redirect_uri"] = $"{oauthConfig.RedirectUri}",["scope"] = $"{oauthConfig.Scope}",["state"] = $"{state}"};}protected override Dictionary<string, string> BuildGetAccessTokenParams(Dictionary<string, string> authorizeCallbackParams){return new Dictionary<string, string>(){["grant_type"] = "authorization_code",["code"] = authorizeCallbackParams["code"]};}protected override Dictionary<string, string> BuildGetUserInfoParams(AlipayAccessTokenModel accessTokenModel){return new Dictionary<string, string>(){["auth_token"] = accessTokenModel.AccessToken};}public override async Task<AlipayAccessTokenModel> GetAccessTokenAsync(Dictionary<string, string> authorizeCallbackParams){var getAccessTokenResponse = await alipayApiRequest.PostAsync<AlipayApiResponse>("alipay.system.oauth.token", BuildGetAccessTokenParams(authorizeCallbackParams));if (getAccessTokenResponse.AccessTokenResponse.SubMsg != null){throw new Exception(getAccessTokenResponse.AccessTokenResponse.SubMsg);}return getAccessTokenResponse.AccessTokenResponse;}public override async Task<AlipayUserInfoModel> GetUserInfoAsync(AlipayAccessTokenModel accessTokenModel){var getUserInfoResponse = await alipayApiRequest.PostAsync<AlipayApiResponse>("alipay.user.info.share",BuildGetUserInfoParams(accessTokenModel));if (getUserInfoResponse.AlipayUserInfoModel.SubMsg != null){throw new Exception(getUserInfoResponse.AlipayUserInfoModel.SubMsg);}return getUserInfoResponse.AlipayUserInfoModel;}}

效果预览

图片

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

https://github.com/mrhuo/MrHuo.OAuth

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

相关文章:

  • 活用package.json脚本,用node拷贝文件到指定目录
  • AR眼镜硬件解决方案_AR/VR智能眼镜安卓主板芯片方案介绍
  • 计算机毕设 基于大数据的服务器数据分析与可视化系统 -python 可视化 大数据
  • 【数据结构】树与二叉树(四):满二叉树、完全二叉树及其性质
  • YOLOv5算法改进(22)— 更换主干网络MobileNetv3 + 添加CA注意力机制
  • KiKi知道了什么是质数,他现在想知道所有三位整数中,有多少个质数
  • viple进阶2:打印九九乘法表
  • SLAM从入门到精通(被忽视的基础图像处理)
  • STM32笔记—DMA
  • 2023年十大地推拉新接单平台和网推接单平台,都是一手单
  • mac电脑系统清理软件CleanMyMac X2024破解版下载
  • MySQL的备份恢复
  • Flink SQL DataGen Connector 示例
  • Git使用规范指南
  • 在 ASP.NET C# 中用Aspose.PDF将 PDF 页面转换为 JPG 图像
  • CentOS 7 防火墙操作
  • ES2017异步函数现已正式可用
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java|序列化异常StreamCorruptedException的解决方法
  • leetcode388. Longest Absolute File Path
  • leetcode讲解--894. All Possible Full Binary Trees
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MySQL用户中的%到底包不包括localhost?
  • Redis 懒删除(lazy free)简史
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • ------- 计算机网络基础
  • 简单基于spring的redis配置(单机和集群模式)
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 实现简单的正则表达式引擎
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 突破自己的技术思维
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​Spring Boot 分片上传文件
  • ​插件化DPI在商用WIFI中的价值
  • (09)Hive——CTE 公共表达式
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (转)socket Aio demo
  • (转)程序员技术练级攻略
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net7 环境安装配置
  • .NET中两种OCR方式对比
  • @angular/cli项目构建--http(2)
  • @Autowired和@Resource的区别
  • @Autowired和@Resource装配
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @JoinTable会自动删除关联表的数据
  • @Mapper作用