开源第三方登录组件OAuthLogin2.0 支持QQ,阿里巴巴,淘宝,京东,蘑菇街,有赞等平台
Nuget地址:https://www.nuget.org/packages/OAuthLogin2.0/
项目结构说明:
AuthorizationProviders文件夹下主要存放内置的授权平台。
CustomException文件夹主要存放各个平台对应的错误处理机制。
说下涉及到的几个名词:
平台:
定义一个数据结构,用于规范外部交易平台名称。名称是业务系统为Etp分配的唯一标识,由不限长度的字符组成。由于极易发生拼写错误,强烈建议在程序中采用如下规范写法:
(1)需要使用某一平台的名称字符串时,应使用其对应的静态字段获取实例,然后使用Name字段获取名称字符串;
(2)需要对一个名称字符串进行处理时,应先使用FromString方法获取其对应的实例,然后使用相应的实例方法进行处理;
(3)扩展机制:如果开发人员要使用未预定义的平台,可以定义自己的枚举器,使用静态字段存储Etp实例。
应用:
描述平台中的应用,存储该应用的基本接口信息。
应用是平台用来管理接口调用权限的机制。业务系统方要访问平台接口必须先申请一个应用,经平台方审核通过后才具有调用相应接口的权限。
使用教程:
Nuget安装:Install-Package OAuthLogin2.0
配置文件修改如下:
1:在configSections中添加节点:
<configSections> <section name="OAuthLogin" type="OAuthLogin.OAuthLoginConfig,OAuthLogin2.0" /> </configSections>
2:在configSections节点下添加节点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <OAuthLogin> <etps> <etp name= "qq" authorizationUrl= "https://graph.qq.com/oauth2.0/authorize" tokenUrl= "https://graph.qq.com/oauth2.0/token" apiUrl= "https://graph.qq.com/oauth2.0/me" > <apps> <add appkey= "" secret= "" redirectUrl= "" /> </apps> </etp> </etps> <AuthorizationProviders> <add etp= "qq" type= "OAuthLogin.QQAuthorizationProvider" assembly= "OAuthLogin2.0" /> </AuthorizationProviders> <EtpExceptionBuilders> <add etp= "qq" type= "OAuthLogin.QQExceptionBuilder" assembly= "OAuthLogin2.0" /> </EtpExceptionBuilders> </OAuthLogin> |
跳转到授权URL:
public class HomeController : Controller { public ActionResult Index() { var platform = Platform.Find(EtpName.QQ); return Redirect(platform.Applications[0].GenerateAuthorizationUrl("Test")); } }
获取回调结果:
public ActionResult Index() { var palteFrom = Platform.Find(EtpName.QQ); var token=palteFrom.Applications[0].GetToken(System.Web.HttpContext.Current.Request);//GetToken支持异步获取,异步方法为GetTokenAsync return Content(token.ToString()); }
结果如下:
放上一张核心图,详细会在下篇讲:
分类:
【003】架构设计漫谈
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?