zoukankan      html  css  js  c++  java
  • 开源第三方登录组件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节点下添加节点:

      <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());
            }

    结果如下:

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

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/dazhuangtage/p/6306133.html
Copyright © 2011-2022 走看看