今日写的博客

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

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

现已发布至github:

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

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

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

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

先说下代码结构:

一、引用:

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

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

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

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

二、代码图:

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

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

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

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

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

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

4、OAuthLoginResult是OAuth验证结果类。

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

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

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

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

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

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

看看使用效果:

1、QQ登录:

2、Sina效果:

3、Baidu效果:

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

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

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

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

qq:491217650

MrHuo.OAuthLoginLibs社会化登录组件Github的更多相关文章

  1. 社会化登录分享-Android SDK的二次封装和使用

    本系列文章将第三方的登录分享功能进行二次封装,统一接口调用,简化了接不同平台登录分享的步骤. 0 系列文章 系列一 Android SDK的二次封装和使用 系列二 源码解析 系列三 微信SDK接入 系 ...

  2. Xamarin.Android 绑定友盟社会化分享组件

    Xamarin.Android 绑定友盟社会化分享组件 最近在开发博客园Android App的时候需要用到友盟社会化分享组件,在github上搜了一下都没有找到最新版本绑定好的项目,就自己动手来绑定 ...

  3. 《React后台管理系统实战 :一》:目录结构、引入antd、引入路由、写login页面、使用antd的form登录组件、form前台验证、高阶函数/组件

    实战 上接,笔记:https://blog.csdn.net/u010132177/article/details/104150177 https://gitee.com/pasaulis/react ...

  4. React使用笔记2--创建登录组件

    文章目录 最近在学习使用React作为前端的框架,<React使用笔记>系列用于记录过程中的一些使用和解决方法.本文记录搭建登录页面的过程. 根据产品规划划分模块 主要页面逻辑 在这里,本 ...

  5. 开源第三方登录组件OAuthLogin2.0 解析及开源地址

    OAuthLogin2.0介绍地址: 博客地址:http://www.cnblogs.com/dazhuangtage/p/6306133.html Nuget地址:https://www.nuget ...

  6. rest_framework登录组件,权限组件

    昨日回顾: -HyperlinkedIdentityField(用来生成url),传三个参数 -实例化序列化类的时候,BookSerializer(ret, many=True, context={' ...

  7. 开源第三方登录组件OAuthLogin2.0 架构解析及开源地址

    OAuthLogin2.0介绍地址: 入门地址:http://www.cnblogs.com/dazhuangtage/p/6306133.html Nuget地址:https://www.nuget ...

  8. 6、Selenium+Python登录案例 -- Github

    一:登录 1.指定浏览器,打开网址:https://github.com/login 2.设置等待时间: time.sleep(3) or driver.implicitly_wait(3) 3.输入 ...

  9. JS /CSS 实现模态框(注册和登录组件)

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. ecstore生成二维码

    利用phpqrcode库生成二维码: /* *二维码添加 */ ////////////////////////////////////// /*引入文件*/ @include(APP_DIR.'/i ...

  2. dede调用指定的多个栏目导航

    {dede:channelartlist row=' typeid='1,2这里输入多个指定的栏目ID' } <li><a href='{dede:field name='typeu ...

  3. Oracle RAC 环境下的连接管理

    http://blog.csdn.net/cyxlxp8411/article/details/7634003

  4. 技巧两种:LINUX删除指定后缀文件及PYTHON更改屏幕字色

    http://blog.csdn.net/caryaliu/article/details/8753028 http://www.iitshare.com/python-print-color-log ...

  5. CCI_chapter 3 Stacks and Queues

    3.1Describe how you could use a single array to implement three stacks for stack 1, we will use [0, ...

  6. 关于Python的3张图

  7. 必须用C模拟OS?

    ASM基本必要,至于高级语言就很难说了.去osdev wiki上一翻一堆各种语言实现的玩意. 一个模拟OS其实不太容易完整搭出来,反倒是直接构造内核的后顾之忧少(如果还有真的想在SIGALRM里耍什么 ...

  8. Linux下cut命令用法

    1 一两句话描述一下cut命令吧! 正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的. cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期 ...

  9. BZOJ1653: [Usaco2006 Feb]Backward Digit Sums

    1653: [Usaco2006 Feb]Backward Digit Sums Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 207  Solved:  ...

  10. cf492D Vanya and Computer Game

    D. Vanya and Computer Game time limit per test 2 seconds memory limit per test 256 megabytes input s ...