我的编程空间,编程开发者的网络收藏夹
学习永远不晚

NET类库封装该如何理解

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

NET类库封装该如何理解

这篇文章跟大家分析一下“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

NET类库封装该如何理解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

NET类库封装该如何理解

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

php icu库该如何理解

本篇文章为大家展示了php icu库该如何理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php icu库是指International Component for Unicode,是一套稳定成熟
2023-06-29

php如何封装数据库增删改的类

本文小编为大家详细介绍“php如何封装数据库增删改的类”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何封装数据库增删改的类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.为什么需要封装数据库类?通常情
2023-07-05

如何封装Python时间处理库创建自己的TimeUtil类

本篇内容主要讲解“如何封装Python时间处理库创建自己的TimeUtil类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何封装Python时间处理库创建自己的TimeUtil类”吧!简介在日
2023-07-06

Java SpringAOP切面类该如何理解

这篇文章给大家介绍Java SpringAOP切面类该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。切面类是什么简单的来说,就是动态的在方法的指定位置添加指定的代码。为什么需要切面类?在软件开发的过程中,有很多
2023-06-22

python基本数据类型该如何理解

本篇文章给大家分享的是有关python基本数据类型该如何理解,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、基本用法1.注释Python中,#+语句 即为一条注释,也可以用
2023-06-22

如何利用VB.NET数据库访问方法封装到类实现

这期内容当中小编将会给大家带来有关如何利用VB.NET数据库访问方法封装到类实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我们都知道,线程要执行的方法不能接受任何参数,如果要传入方法特定条件,可以将方
2023-06-17

如何使用PHP的PDO封装可操作性强的数据库类

PHP用PDO如何封装简单易用的DB类引言:在PHP开发中,数据库是非常重要的一部分。为了更好地操作数据库,我们可以使用PDO(PHP 数据对象)扩展来连接、查询和操作数据库。本文将介绍如何用PDO来封装一个简单易用的DB类,方便开发者进
如何使用PHP的PDO封装可操作性强的数据库类
2024-02-26

如何理解JavaScript缓动动画的封装与使用

如何理解JavaScript缓动动画的封装与使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实现过程分析(1)如何重复调用?答:封装一个函数,用一次调用一次代码分析:func
2023-06-21

如何理解纯Java的RPM类库Redline 1.1.9

如何理解纯Java的RPM类库Redline 1.1.9,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Redline 1.1.9 发布了,该版本增加了重定位 RPMs 的
2023-06-17

C++ 技术中的异常处理:如何使用异常类来封装异常信息?

c++++异常处理机制允许封装异常信息,通过异常类从std::exception派生并使用throw抛出异常。该类提供what()方法获取错误消息,可用于在catch块中处理具体异常,提高错误处理的清晰度和效率。C++ 中使用异常类封装异常
C++ 技术中的异常处理:如何使用异常类来封装异常信息?
2024-05-09

编程语言里函数方法类型检查的重要性该如何理解

这期内容当中小编将会给大家带来有关编程语言里函数方法类型检查的重要性该如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。类型检查和评估的重要性静态类型检查和动态类型检查:静态语言 vs 动态语言强类型
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录