文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

NET类库封装该如何理解

2023-06-17 07:04

关注

这篇文章跟大家分析一下“NET类库封装该如何理解”。内容详细易懂,对“NET类库封装该如何理解”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“NET类库封装该如何理解”的知识吧。

目前开放OAuth3互联接口比较常用的有新浪微博,腾讯QQ,淘宝,其实还有微信,只是微信的我木有申请下来,因为手续麻烦,貌似需要扫描它的协议签字然后发过去,所以就放弃封装微信OAuth3登陆接口了,待以后给补上!关于淘宝OAuth网站接入登陆目前淘宝是暂停审核了貌似,也许是因为财大气粗比较任性吧,不过你还是可申请账号的,可以做应用提交给淘宝。

一。 下面给出各个OAuth3.0申请合作的地址:

-- sinaweibo OAuth3.0 --

申请接入OAuth3合作地址:http://open.weibo.com (微博.开放平台)
授权Url: https://api.weibo.com/oauth3/authorize?client_id=你的ClientId&redirect_uri=你的回调Url&response_type=code&display=default%20&state=sinaweibo

-- qq OAuth3.0 --

申请接入OAuth3合作地址: http://connect.qq.com (所谓的QQ互联,貌似还有一个http://open.qq.com,但这个我还木有用过,就先用QQ互联吧反正是可以登陆)
授权Url: http://openapi.qzone.qq.com/oauth/show?which=Login&display=pc&client_id=你的ClientId&redirect_uri=你的回调Url&response_type=code&display=default%20&state=qq

-- taobao OAuth3.0 --

申请接入OAuth3合作地址:http://open.taobao.com/index.htm
授权Url: https://oauth.taobao.com/authorize?client_id=你的ClientId&redirect_uri=你的回调Url&response_type=code&display=default%20&state=taobao

-- WeiXin OAuth3.0 --

申请接入OAuth3合作地址:https://open.weixin.qq.com

下面开始给dotNET平台的小伙伴们发福利啦,封装了一个类实现了接入到新浪微博,腾讯QQ,淘宝,和获取用户信息,就实现了下面的2个接口,分别是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的请自行扩展,也可以直接调用IOAuthClient的Get和Post方法直接传递参数快速访问api。

新浪微博和淘宝在获取Token的时候就把OpenId直接返回给你了,而腾讯QQ的OAuth3.0接入里获取Token是不会返回OpenId的,需要单独访问https://graph.qq.com/oauth3.0/me获取OpenId,对于这个不同点我在封装的腾讯QQ ParseAccessToken 方法里面已经自动处理了,就是再次发起了一次获取用户Open Id的请求。

各位小伙伴注意啦:访问授权Url返回的Code码只能使用一次,否则会报下面这个错误:

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

二。 下面做了个测试的控制台程序,ClientId和ClientSecret,CallbackUrl请改为自己的。

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)         {             //初始化开放平台客户端(请替换成自己的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");               //测试             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;               //***步:获取开放平台授权地址             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();               //第三步:获取开放平台授权令牌             oauthClient = m_oauthClients[platformCode];             AuthToken accessToken = oauthClient.GetAccessTokenByAuthorizationCode(code);             if (accessToken != null)             {                 Console.WriteLine("");                 Console.WriteLine("Step 2 - OAuth3.0 for AccessToken: " + accessToken.AccessToken);                 //输出原始响应数据                 Console.WriteLine("GetAccessToken Raw Response : ");                 Console.WriteLine(oauthClient.Token.TraceInfo);                   //第四步:调用开放平台API,获取开放平台用户信息                 dynamic oauthProfile = oauthClient.User.GetUserInfo();                   //输出解析出来的用户昵称                 Console.WriteLine("");                 Console.WriteLine("Step 3 - Call Open API UserInfo: ");                 Console.WriteLine("UserInfo Nickname: " + oauthClient.Token.User.Nickname);                 //输出原始响应数据                 Console.WriteLine("GetUserInfo Raw Response : ");                 Console.WriteLine(oauthClient.Token.TraceInfo);             }         }     } }

三。 下面给出几张测试的截图:

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

NET类库封装该如何理解

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

NET类库封装该如何理解

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

NET类库封装该如何理解

关于NET类库封装该如何理解就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下编程网网站!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯