MrHuo.OAuthLoginLibs社会化登录组件Github

时间:2023-03-09 00:23:14
MrHuo.OAuthLoginLibs社会化登录组件Github

今日写的博客

[原创]旧事重提:只配置参数实现OAuth2登录

引来很多园子里的朋友问候,所以今日花了一些时间整理了代码。

现已发布至github:

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

MrHuo.OAuthLogin.QQApis:https://github.com/mrhuo/MrHuo.OAuthLogin.QQApis

MrHuo.OAuthLoginLibs项目内的OAuthLoginDLLs是编译好的最新dll。

欢迎朋友们共同努力让这个组件走得更远。

先说下代码结构:

一、引用:

MrHuo.OAuthLoginLibs社会化登录组件Github

代码中使用了RestSharp作为网络访问。

关于RestSharp的介绍可以看(善友兄的)这篇文章:http://www.cnblogs.com/shanyou/archive/2012/01/27/RestSharp.html

代码中使用了DynamicJson作为Json解析。为什么选择此组件,因为他可以序列化对象为dynamic,而不用新建对象。

-------------------------------不美的分割线-----------------------------------------

二、代码图:

MrHuo.OAuthLoginLibs社会化登录组件Github

可以看出核心就是interfaces和core。此版本中包含中文简体、中文繁体、英文的资源文件。

-------------------------------不美的分割线-----------------------------------------

再看看core程序集的代码图:

MrHuo.OAuthLoginLibs社会化登录组件Github

1、AuthStateManager维护了一个内部的状态机,为了验证每次OAuth验证时带给第三方平台的状态。

2、AuthConfigManager管理已配置的配置文件。

3、OAuthToken是一个通用的Token基类,可根据不同平台继续扩展,目前已基本无需改动。

4、OAuthLoginResult是OAuth验证结果类。

5、OAuthContextBase<TOAuthToken, TUserInfo>是获取用户信息的上下文,是个抽象类。

具体实现参照这个项目MrHuo.OAuthLogin.QQApis

6、核心类就是OAuthLogin,只需要运用这一个类就可以执行OAuth登录了。

我在对象浏览器里截了张图:

MrHuo.OAuthLoginLibs社会化登录组件Github

-------------------------------不美的分割线-----------------------------------------

三、使用代码可以参考文头的文章。

看看使用效果:

1、QQ登录:

MrHuo.OAuthLoginLibs社会化登录组件Github

2、Sina效果:

MrHuo.OAuthLoginLibs社会化登录组件Github

3、Baidu效果:

MrHuo.OAuthLoginLibs社会化登录组件Github

其他登录因笔者没有申请到合适的key,所以无法得知结果如何。还请各位园子里的园友验证后告诉我。

四、其实OAuth登录到此还未完毕,接下来做的事就是,把获取到的用户的openid保存到数据库,创建一个网站内部用户和openid绑定。

接下来的工作就靠大家了。希望大家能喜欢这个组件。 just fork it.

联系方式:http://www.mrhuo.com

qq:491217650