码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • .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

    项目源码

    支付宝登录部分示例代码

    这里只展示部分示例代码,详细代码请前往源码地址查看:GitHub - mrhuo/MrHuo.OAuth: .netcore 下最好用的第三方登录组件集合,集成了国内外大部分平台,欢迎使用。👉

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

    先熟悉流程,对接起来事半功倍:https://opendocs.alipay.com/open/284/106001👉

    示例代码

    1. /// <summary>
    2. /// 支付宝回调URL:
    3. /// https://oauthlogin.net/oauth/alipaycallback?app_id=2021002122645005&source=alipay_wallet&userOutputs=auth_user&scope=auth_user&alipay_token=&auth_code=2c58e763fdca4fb6b1f5a5bf4d26WA05
    4. /// https://github.com/alipay/alipay-easysdk/tree/master/csharp
    5. /// </summary>
    6. public class AlipayOAuth : OAuthLoginBase<AlipayAccessTokenModel, AlipayUserInfoModel>
    7. {
    8. private readonly AlipayApiRequest alipayApiRequest;
    9. public AlipayOAuth(OAuthConfig oauthConfig, string privateRSAKey, string publicRSAKey, string encryptKey) : base(oauthConfig)
    10. {
    11. alipayApiRequest = new AlipayApiRequest()
    12. {
    13. PrivateRSAKey = privateRSAKey,
    14. PublicRSAKey = publicRSAKey,
    15. AppId = oauthConfig.AppId
    16. };
    17. }
    18. protected override string AuthorizeUrl => "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm";
    19. protected override string AccessTokenUrl => throw new NotImplementedException();
    20. protected override string UserInfoUrl => throw new NotImplementedException();
    21. protected override Dictionary<string, string> BuildAuthorizeParams(string state)
    22. {
    23. return new Dictionary<string, string>()
    24. {
    25. ["response_type"] = "code",
    26. ["app_id"] = $"{oauthConfig.AppId}",
    27. ["redirect_uri"] = $"{oauthConfig.RedirectUri}",
    28. ["scope"] = $"{oauthConfig.Scope}",
    29. ["state"] = $"{state}"
    30. };
    31. }
    32. protected override Dictionary<string, string> BuildGetAccessTokenParams(Dictionary<string, string> authorizeCallbackParams)
    33. {
    34. return new Dictionary<string, string>()
    35. {
    36. ["grant_type"] = "authorization_code",
    37. ["code"] = authorizeCallbackParams["code"]
    38. };
    39. }
    40. protected override Dictionary<string, string> BuildGetUserInfoParams(AlipayAccessTokenModel accessTokenModel)
    41. {
    42. return new Dictionary<string, string>()
    43. {
    44. ["auth_token"] = accessTokenModel.AccessToken
    45. };
    46. }
    47. public override async Task<AlipayAccessTokenModel> GetAccessTokenAsync(Dictionary<string, string> authorizeCallbackParams)
    48. {
    49. var getAccessTokenResponse = await alipayApiRequest.PostAsync<AlipayApiResponse>(
    50. "alipay.system.oauth.token",
    51. BuildGetAccessTokenParams(authorizeCallbackParams)
    52. );
    53. if (getAccessTokenResponse.AccessTokenResponse.SubMsg != null)
    54. {
    55. throw new Exception(getAccessTokenResponse.AccessTokenResponse.SubMsg);
    56. }
    57. return getAccessTokenResponse.AccessTokenResponse;
    58. }
    59. public override async Task<AlipayUserInfoModel> GetUserInfoAsync(AlipayAccessTokenModel accessTokenModel)
    60. {
    61. var getUserInfoResponse = await alipayApiRequest.PostAsync<AlipayApiResponse>(
    62. "alipay.user.info.share",
    63. BuildGetUserInfoParams(accessTokenModel)
    64. );
    65. if (getUserInfoResponse.AlipayUserInfoModel.SubMsg != null)
    66. {
    67. throw new Exception(getUserInfoResponse.AlipayUserInfoModel.SubMsg);
    68. }
    69. return getUserInfoResponse.AlipayUserInfoModel;
    70. }
    71. }

    效果预览

    项目源码地址

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

    GitHub - mrhuo/MrHuo.OAuth: .netcore 下最好用的第三方登录组件集合,集成了国内外大部分平台,欢迎使用。

    优秀项目和框架精选

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

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

    文章转载自:追逐时光者

    原文链接:https://www.cnblogs.com/Can-daydayup/p/17832805.html

  • 相关阅读:
    超链接标签、列表标签、img标签
    《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第9章 阿里巴巴数据整合及管理体系
    HTML静态网页成品作业(HTML+CSS)——家乡芷江侗族自治县介绍网页(1个页面)
    Golang入门笔记(10)—— 包
    微信小程序获取华为云影子设备失败,显示403报错
    pytest测试报告邮件发送格式调整(基于Allure的测试报告)
    flask+python快速搭建
    axios和SpringMVC数据交互(一维二维数组,JSON/form形式,@RequestBody/@RequestParam)
    悠易科技LinkFlow徐涛:CDP就是数字营销时代的ERP
    iOS使用Unity容器动态加载3D模型
  • 原文地址:https://blog.csdn.net/kfashfasf/article/details/134440031
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号