溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

NET類庫(kù)封裝該如何理解

發(fā)布時(shí)間:2022-01-11 16:04:18 來(lái)源:億速云 閱讀:111 作者:柒染 欄目:編程語(yǔ)言

這篇文章跟大家分析一下“NET類庫(kù)封裝該如何理解”。內(nèi)容詳細(xì)易懂,對(duì)“NET類庫(kù)封裝該如何理解”感興趣的朋友可以跟著小編的思路慢慢深入來(lái)閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W(xué)習(xí)“NET類庫(kù)封裝該如何理解”的知識(shí)吧。

目前開放OAuth3互聯(lián)接口比較常用的有新浪微博,騰訊QQ,淘寶,其實(shí)還有微信,只是微信的我木有申請(qǐng)下來(lái),因?yàn)槭掷m(xù)麻煩,貌似需要掃描它的協(xié)議簽字然后發(fā)過(guò)去,所以就放棄封裝微信OAuth3登陸接口了,待以后給補(bǔ)上!關(guān)于淘寶OAuth網(wǎng)站接入登陸目前淘寶是暫停審核了貌似,也許是因?yàn)樨?cái)大氣粗比較任性吧,不過(guò)你還是可申請(qǐng)賬號(hào)的,可以做應(yīng)用提交給淘寶。

一。 下面給出各個(gè)OAuth3.0申請(qǐng)合作的地址:

-- sinaweibo OAuth3.0 --

申請(qǐng)接入OAuth3合作地址:http://open.weibo.com (微博.開放平臺(tái))
授權(quán)Url: https://api.weibo.com/oauth3/authorize?client_id=你的ClientId&redirect_uri=你的回調(diào)Url&response_type=code&display=default%20&state=sinaweibo

-- qq OAuth3.0 --

申請(qǐng)接入OAuth3合作地址: http://connect.qq.com (所謂的QQ互聯(lián),貌似還有一個(gè)http://open.qq.com,但這個(gè)我還木有用過(guò),就先用QQ互聯(lián)吧反正是可以登陸)
授權(quán)Url: http://openapi.qzone.qq.com/oauth/show?which=Login&display=pc&client_id=你的ClientId&redirect_uri=你的回調(diào)Url&response_type=code&display=default%20&state=qq

-- taobao OAuth3.0 --

申請(qǐng)接入OAuth3合作地址:http://open.taobao.com/index.htm
授權(quán)Url: https://oauth.taobao.com/authorize?client_id=你的ClientId&redirect_uri=你的回調(diào)Url&response_type=code&display=default%20&state=taobao

-- WeiXin OAuth3.0 --

申請(qǐng)接入OAuth3合作地址:https://open.weixin.qq.com

下面開始給dotNET平臺(tái)的小伙伴們發(fā)福利啦,封裝了一個(gè)類實(shí)現(xiàn)了接入到新浪微博,騰訊QQ,淘寶,和獲取用戶信息,就實(shí)現(xiàn)了下面的2個(gè)接口,分別是IOAuthClient和IUserInterface。

namespace GeRenXing.OpenPlatform {     public interface IOAuthClient     {         AuthOption Option { get; }         AuthToken Token { get; }         IUserInterface User { get; }           String GetAuthorizeUrl(ResponseType responseType);         AuthToken GetAccessTokenByAuthorizationCode(string code);         AuthToken GetAccessTokenByPassword(string passport, string password);         AuthToken GetAccessTokenByRefreshToken(string refreshToken);         String Get(String url, params RequestOption[] options);         String Post(String url, params RequestOption[] options);     } }

需要封裝更多api的請(qǐng)自行擴(kuò)展,也可以直接調(diào)用IOAuthClient的Get和Post方法直接傳遞參數(shù)快速訪問(wèn)api。

新浪微博和淘寶在獲取Token的時(shí)候就把OpenId直接返回給你了,而騰訊QQ的OAuth3.0接入里獲取Token是不會(huì)返回OpenId的,需要單獨(dú)訪問(wèn)https://graph.qq.com/oauth3.0/me獲取OpenId,對(duì)于這個(gè)不同點(diǎn)我在封裝的騰訊QQ ParseAccessToken 方法里面已經(jīng)自動(dòng)處理了,就是再次發(fā)起了一次獲取用戶Open Id的請(qǐng)求。

各位小伙伴注意啦:訪問(wèn)授權(quán)Url返回的Code碼只能使用一次,否則會(huì)報(bào)下面這個(gè)錯(cuò)誤:

{"error":"invalid_grant","error_code":21325,"request":"/oauth3/access_token","error_uri":"/oauth3/access_token","error_description":"invalid authorization code:2c2cb4e1f6b70650acbe1dad757ea6bb"}

二。 下面做了個(gè)測(cè)試的控制臺(tái)程序,ClientId和ClientSecret,CallbackUrl請(qǐng)改為自己的。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics;   using GeRenXing.OpenPlatform;   namespace GeRenXing.OpenPlatform.Test {     class Program     {         private static Dictionary<String, IOAuthClient> m_oauthClients;         static void Main(string[] args)         {             //初始化開放平臺(tái)客戶端(請(qǐng)?zhí)鎿Q成自己的ClientId,ClientScrert,CallbackUrl)             m_oauthClients = new Dictionary<string, IOAuthClient>();             m_oauthClients["sinaweibo"] = new OpenPlatform.OAuthClient.SinaWeiBoClient("You ClientId", "You ClientScrert", "You Callback Url");             m_oauthClients["qq"] = new OpenPlatform.OAuthClient.TencentQQClient("You ClientId", "You ClientScrert", "You Callback Url");             m_oauthClients["taobao"] = new OpenPlatform.OAuthClient.TaoBaoClient("You ClientId", "You ClientScrert", "You Callback Url");               //測(cè)試             OAuthTest("sinaweibo");             //OAuthTest("qq");             //OAuthTest("taobao");               Console.ReadKey(true);         }           private static void OAuthTest(String platformCode)         {             String authorizeUrl = String.Empty;             if (String.IsNullOrEmpty(platformCode)) platformCode = "sinaweibo";               Console.WriteLine("OpenPlatform Request For " + platformCode);             Console.WriteLine("");               IOAuthClient oauthClient = m_oauthClients[platformCode];             oauthClient.Option.State = platformCode;               //***步:獲取開放平臺(tái)授權(quán)地址             authorizeUrl = m_oauthClients[platformCode].GetAuthorizeUrl(ResponseType.Code);             Console.WriteLine("Step 1 - OAuth3.0 for Redirect AuthorizeUrl: ");             Console.WriteLine(authorizeUrl);               //第二步:打開IE瀏覽器獲取Code             Process p = new Process();             ProcessStartInfo psi = new ProcessStartInfo();             psi.Arguments = authorizeUrl;             psi.FileName = "C:\\Program Files\\Internet Explorer\\iexplore.exe";             p.StartInfo = psi;             p.Start();               Console.WriteLine("");             Console.WriteLine("OAuth3.0 Input Server Response Code");             String code = Console.ReadLine();               //第三步:獲取開放平臺(tái)授權(quán)令牌             oauthClient = m_oauthClients[platformCode];             AuthToken accessToken = oauthClient.GetAccessTokenByAuthorizationCode(code);             if (accessToken != null)             {                 Console.WriteLine("");                 Console.WriteLine("Step 2 - OAuth3.0 for AccessToken: " + accessToken.AccessToken);                 //輸出原始響應(yīng)數(shù)據(jù)                 Console.WriteLine("GetAccessToken Raw Response : ");                 Console.WriteLine(oauthClient.Token.TraceInfo);                   //第四步:調(diào)用開放平臺(tái)API,獲取開放平臺(tái)用戶信息                 dynamic oauthProfile = oauthClient.User.GetUserInfo();                   //輸出解析出來(lái)的用戶昵稱                 Console.WriteLine("");                 Console.WriteLine("Step 3 - Call Open API UserInfo: ");                 Console.WriteLine("UserInfo Nickname: " + oauthClient.Token.User.Nickname);                 //輸出原始響應(yīng)數(shù)據(jù)                 Console.WriteLine("GetUserInfo Raw Response : ");                 Console.WriteLine(oauthClient.Token.TraceInfo);             }         }     } }

三。 下面給出幾張測(cè)試的截圖:

SianWeiBo Oauth3.0
++++++++++++++++++++++++++++++++++++++++++++++++++++

NET類庫(kù)封裝該如何理解

++++++++++++++++++++++++++++++++++++++++++++++++++++
QQ OAuth3.0
++++++++++++++++++++++++++++++++++++++++++++++++++++

NET類庫(kù)封裝該如何理解

++++++++++++++++++++++++++++++++++++++++++++++++++++
TaoBao OAuth3.0
++++++++++++++++++++++++++++++++++++++++++++++++++++

NET類庫(kù)封裝該如何理解

關(guān)于NET類庫(kù)封裝該如何理解就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識(shí),請(qǐng)大家多多留意小編的更新。謝謝大家關(guān)注一下億速云網(wǎng)站!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI