• .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

    示例代码

    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<stringstring> BuildAuthorizeParams(string state)
    22.         {
    23.             return new Dictionary<stringstring>()
    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<stringstring> BuildGetAccessTokenParams(Dictionary<stringstring> authorizeCallbackParams)
    33.         {
    34.             return new Dictionary<stringstring>()
    35.             {
    36.                 ["grant_type"= "authorization_code",
    37.                 ["code"= authorizeCallbackParams["code"]
    38.             };
    39.         }
    40.         protected override Dictionary<stringstring> BuildGetUserInfoParams(AlipayAccessTokenModel accessTokenModel)
    41.         {
    42.             return new Dictionary<stringstring>()
    43.             {
    44.                 ["auth_token"= accessTokenModel.AccessToken
    45.             };
    46.         }
    47.         public override async Task<AlipayAccessTokenModel> GetAccessTokenAsync(Dictionary<stringstring> 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支持💖。

    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

  • 相关阅读:
    开发者研究与洞察
    Qt菜单栏-工具栏-状态栏
    上周热点回顾(2.12-2.18)
    华为机考:HJ3 明明的随机数
    在 M1/M2 Mac 上,让 Windows 11 免费“跑”起来!
    毅速丨3D打印透气钢正在被各行业广泛应用
    隐式神经表示二:超分网络学习傅里叶系数Local Texture Estimator for Implicit Representation Function
    Alibaba内部首发“面试百宝书+超全算法面试手册”PDF版下载
    VMware的三种连接模式
    java多线程基础——Callable接口及线程池补充
  • 原文地址:https://blog.csdn.net/qq_37237487/article/details/134277573