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()); }
結果如下:

放上一張核心圖,詳細會在下篇講:

