zoukankan      html  css  js  c++  java
  • OAuthLogin2.0

    开源第三方登录组件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());
            }
    复制代码

    结果如下:

    放上一张核心图,详细会在下篇讲:

  • 相关阅读:
    Cookie天使还是恶魔?
    Nhibernate学习起步之manytoone篇
    共享终结者ShareKiller
    基于弹性碰撞原理的抖动式窗口
    Nhibernate分析之华山论剑篇
    Nhibernate学习之manytomany篇
    JavaScript常用字符串函数
    让全中国人蒙羞的搜索爬虫
    近期项目的一些代码总结
    Nhibernate学习之性能改善1
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/6337697.html
Copyright © 2011-2022 走看看