马上就要春节放假.年底活动安排的比较多.庸庸碌碌了一阵,忙中偷闲 这篇博文已经在LiveWriter躺了三天.下午回来一打开就看见标题.继续来完善Windows phone 7上Tencent微博客户端.上一篇中Windows Phone 7应用之Tencent微博——OAuth认证 提到以OAuth协议验证的原理流程,本篇来关注一下Tencent微博OAuth协议API封装. 目前Tencent 微博采用Google OAuth开放协议. 这是Google OAuth认证服务中提供的一个开源项目.其中提供多种语言Java/C#/Ruby等实现OAuth协议底层代码.版本是1.0的. 目前OAuth 2.0协议可能在年后[2011]推出. 不过在Google一个小项目中Play Ground With OAuth中已经推出OAuth2.0认证服务. 据我所知Oauth1.0 在访问安全上存在漏洞.才衍生出2.0 版本.但这个说法没有得到权威机构的证实. 如果对OAuth协议底层实现感兴趣的同学可以研究一下.

在进入封装Tencent OAuth协议API前,需要一些准备工作. 注册一个微博开放平台开发者账号.也就是我上节提到Appkey. 在这里想发一下牢骚.注册Sina微博需要身份证号绑定. 原因不解释.各位体会. 表示反感. 另外就是进入Sina 微博开放平台.你会发现 东西太多了. 作为一个第三方应用开发者你该干什么?从那下手呢? 你需要持续看完几大篇介绍平台文章才看到自己关心重点. 这也是我说Sina API是一个"巨无霸"绝非是空穴来风. 另外一个就是针对申请开发者账号, 采用一个独立微博 类似发一条消息 等候验证. 这种方式不仅在某种程度上暴露了开发者个人信息同时也是自己应用信息在未审核通过之前被他人浏览了, Sina在主观上暴露了开发者意图隐私上没有做保护. 太没安全感.开发人员的IDea很容易在未审核前提就被他人给剽窃了. 审核时间令人不敢恭维. 而Tencent在我发出第一次请求后就受理 通过,. 短短两天时间.并且是在审核之后才对外公开相应应用信息.

首先是Sina绑定身份证方式就让我觉得没有安全感.网络上没有自由性. 这仿佛也注定自己对Sina Mini Blog 始终没有信心. 当然常玩推特同学就不用担心这个问题了. 墙内和墙外是另个世界. 如上纯属于个人看法.Sina没有赢得我的好感,.转入正题 来说申请Appkey开发者账号.

Tencent Mini Blog PlatFrom[开发平台]:http://open.t.qq.com/ 点击大概看一下开发微博引用流程 你是否觉得这种方式比Sina那大篇幅文字要直观呢?:

审核通过后就看到从属于开发者和对应应用唯一标识AppKey:

有了开发应用AppKey剩下问题就来关注一下不同等级Appkey访问Tencent 微博的权限问题:

在第三方应用中关键是具有写请求权限. 这样我们才可以通过第三方向Tencent 微博平台写入数据. 这就意味至少要从Tencent那里拿到中级授权. 对于开发而言单个AppKey 具有75W次访问频率 已经足够使用. 其他相关素材以说明请参考Tencent Mini Blog PlatFrom[开发平台]:http://open.t.qq.com/ 如下重点来说一下Tencent 微博对第三方访问时API封装.

一般在微博的应用中.涉及到开放平台都具有两个核心特点. 第一个就是对外公开具备安全机制的数据访问协议[上篇讲到的Google OAuth] 另外一个因素就是开放平台数据流的流入和流出. 即开放平台本身的意义 开放数据读取. 和写入. 那磨对外公开的统一的API无非制定一个统一方式. 另外一个目前Sina和Tencent 都采用的是Google OAuth协议方式. 现在我们都能看到各自推出官方的支持不同语言的API.当然也包括一些第三方定义API. 如果你对Google OAuth协议有兴趣.也可以完全根据开放Sina或是Tencent等开放平台协议.可以写出一套自己的访问API. 这里来详细解析一下Tencent微博开放平台Google OAuth协议时如何工作的; 这也是封装API的前提.

ok.在开放平台中提供不同语言的SDK下载 这里拿C#作为标准语言. 官方也提供C#的比较简单的SDK.如果你觉得没有必要重复制造轮子.就拿官方提供版本来具体看一下Google OAuth如何工作的: C#版本的SDK下载地址 打开解决方案:

在Google OAuth协议中我们首先需要获得Request Token的授权 在通过Request Token授权信息获取Access_Token即最终开放平台身份认证才可实现第三方的数据读写.如上SDK中Oauth.cs即定义Google Oauth的源码 你可以可以在 Google OAuth开源项目中看到. 实现请求的方式有两种同步SyncHttp和异步AsyncHttp. QWeiboRequest则封装这两种请求的方式.来看看如何首先拿到RequstToken的授权: 在APi中可以看到Tencent给出请求说明: 需要参数:

request_token-URL地址:https://open.t.qq.com/cgi-bin/request_token. 发起一个Requst_token:

  1. private bool GetRequestToken(string customKey, string customSecret)
  2. {
  3. string url = "https://open.t.qq.com/cgi-bin/request_token";
  4. List<Parameter> parameters = new List<Parameter>();
  5. OauthKey oauthKey = new OauthKey();
  6. oauthKey.customKey = customKey;
  7. oauthKey.customSecrect = customSecret;
  8. oauthKey.callbackUrl = "http://www.qq.com";
  9. QWeiboRequest request = new QWeiboRequest();
  10. return ParseToken(request.SyncRequest(url, "GET", oauthKey, parameters, null));
  11. }

在对应参数中需要指定Appkey的键值对. 和回调路径[也可以不指定 这里为了演示]. 就可以发起指定Get请求.来看一下带有完整参数获取Request_Token URL:

  1. //Request _Token 完整的URL地址 可以详细看到每个参数配置
  2. https://open.t.qq.com/cgi-bin/request_token
  3. ?oauth_callback=http%3A%2F%2Fqunmgr.qq.com%2Foauthapi%2Fcallback.php
  4. &oauth_consumer_key=0aae7ba5c10d4b939694b0b3b9ffe8ac
  5. &oauth_nonce=b788149731e0ed75daa03a6e1e30427c
  6. &oauth_signature=zO5%2FgT%2FP6tbhBBZVuoyfjPwjdxY%3D
  7. &oauth_signature_method=HMAC-SHA1
  8. &oauth_timestamp=1288932298
  9. &oauth_version=1.0

ok.用Fiddler监视一下请求的参数和数据:

看一下返回值和对应参数:-返回值:

  1. //从tencent 获取到请求返回值
  2. oauth_token=a63f4a0e1242462fb8c11e53159ba294
  3. &oauth_token_secret=40ece707e064128e4fec692e3c09c692
  4. &oauth_callback_confirmed=true

参数说明:

You See!这就是一个Request _Token从请求参数发出到返回值的整个过程, 获取Request_Token最为关键参数就是Oauth_token我们可以通过它获得AccessToken. 依次类推可以根据Tencent给出官方说明 获得AccessToken 具体实现:

  1. //获取一个人已经认证的Access Token
  2. private bool GetAccessToken(string customKey, string customSecret, string requestToken,
  3. string requestTokenSecrect, string verify)
  4. {
  5. string url = "https://open.t.qq.com/cgi-bin/access_token";
  6. List<Parameter> parameters = new List<Parameter>();
  7. OauthKey oauthKey = new OauthKey();
  8. oauthKey.customKey = customKey;
  9. oauthKey.customSecrect = customSecret;
  10. oauthKey.tokenKey = requestToken;
  11. oauthKey.tokenSecrect = requestTokenSecrect;
  12. oauthKey.verify = verify;
  13. QWeiboRequest request = new QWeiboRequest();
  14. return ParseToken(request.SyncRequest(url, "GET", oauthKey, parameters, null));
  15. }

通过Requst_token 获得认证后就成功获取Access_Token前提条件Oauth_token参数. 通过OAuth_Token从Tencent服务器端交换过来一个Access_token. 从Tencent请求需要参数:

求的整个URL参数配置:

  1. //对应的Access_Token请求的完整URL 注意Oauth_token对应从REquest_token获取返回值Oauthtoken
  2. https://open.t.qq.com/cgi-bin/access_token
  3. ?oauth_consumer_key=0aae7ba5c10d4b939694b0b3b9ffe8ac
  4. &oauth_nonce=35885b07fe7dc53942d405e552d086fe
  5. &oauth_signature=TXBihj%2FH4avLJaWmjYARDVVCu8M%3D
  6. &oauth_signature_method=HMAC-SHA1
  7. &oauth_timestamp=1288933101
  8. &oauth_token=66ae88faecd14a1f8e826d35d5e857a7
  9. &oauth_verifier=1154e3657d5542338eece2767172da02
  10. &oauth_version=1.0

在来查看对应的返回值:

  1. //Access_token对应的返回值
  2. oauth_token=ffc37464473e48a2b22226350dc98210
  3. &oauth_token_secret=3fe92ec42e936672ceca549d432c237d
  4. &name=chenkai

返回值参数说明:

注意在请求的参数中. 上一次通过Request_token返回一个OauthToken返回值用来作为AccessToken请求的Oauth_Token参数的值从服务器端交换出一个AccessToken.从返回值参数name我们就可以看到自己微薄的账户名以及即将获取的Oauth_token和Secret键值对.

如上从上篇的Google Oauth协议概念转换成与Tencent平台交互. 转换成整个流程API的封装. 由此我们可以通过这个Google OAuth在Tencent平台上运用我们可以轻松知道整个获取数据整个流程.

整理好Oauth认证协议.注意官方给出C#SDK针对普通类库类型. 相对在Windows phone 7开发必须继承Windows phone 7 Class laibry类库.APi我们可以重新设计:

OAuth协议目录下.OAuthBase作为Google OAuth协议基类. 在此基础上TencentOAuthBase类继承与它,并实现对Tencent基础请求进行处理. 当然如此定义好数据输入和输出通道 剩下就是大量关于Windows phone 7Tencent微博应用定义和实现了. 这就是一个量的问题.API初步定义结构分为三层:

如上也是我对Windows phone 7 API封装结构整个设想,.现在已经走到第二步. 关于红色框系.即在完整移植Tencent微博到Windows phone 7客户端后.加上不同于Web终端 移动终端特有的运用. 正在考虑把微博人物之间关系建立人际圈. 加入Bing Map Control相关小细节.

本篇初步拟定API封装整个层次思路. 实现对Google Oauth协议通信的实现. 有了这些 就不愁数据的交互操作了. 下一篇中我会采用编译好的API实现在Windows phone 7上推送出第一条微博. 如有任何疑问请在留言中提出.

  • 初级授权:150,000次请求[可支撑至少1,000活跃用户同时在线]
  • 读请求:每API单用户每小时150次[包括获取公共时间轴,首页时间轴等] 
    写请求:不可用
  • 中级授权:750,000次请求[可支撑至少5,000活跃用户同时在线]
  • 读请求:每API单用户每小时150次 
    写请求:每用户每小时最大100次[包括发微博、转播、对话、私信、收听等]
本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/763814

Windows Phone 7应用之Tencent微博——封装API[上篇]相关推荐

  1. C# 视频监控系列(7):服务器端——封装API(下)(1)

    前言 写系列文章的时候[前言]部分变得无言了,可能来得顺利了点吧: ) 本章中提供的封装均是我用笨办法从<<Hikvision 板卡网络开发包编程手册V4.7>>和<&l ...

  2. C# 视频监控系列(6):服务器端——封装API(上)(1)

    前言 写系列文章的时候[前言]部分变得无言了,可能来得顺利了点吧: ) 本章中提供的封装均是我用笨办法从<<Hikvision 板卡网络开发包编程手册V4.7>>和<&l ...

  3. C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]

    前言 当你认真的写完客户端和服务器端的时候可能不需要再继续往下看关于播放器的代码和说明,因为你已经掌握了如何转换VC++代码的技巧了,加上GOOGLE再来完成这个播放器应该算小菜了.但是作为我的系列, ...

  4. 截止20210605的微博部分API汇总——仅供学习参考使用

    文章目录 免责声明 背景 API列表 搜索主评论API REQUEST RESPOND 搜索次评论API REQUEST RESPOND 转发评论API REQUEST RESPOND 上传图片API ...

  5. C# 视频监控系列(2):客户端——封装API

    前言 本章主要是在C#封装的海康DVR客户端SDK 的代码上修改的,并参考<Hikvision 板卡网络开发包编程手册V4.7.pdf>补上更完整的注释,并且参照VC++源码做了小部分修改 ...

  6. C# 海康DVR客户端开发系列(2)—— 封装API

    前言 从上篇文章(10月4日)到本篇文章截止到今天(10月22日)一直在做这个SDK翻译工作,耗时2周半,代码超过1万行,约有三分之二的行数是注释.由于工作忙也只能一天抽出那么半个小时一个小时来整理, ...

  7. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  8. 微博官方API使用方法【全流程教学】

    微博官方API使用方法[全流程教学] 微博开发者身份认证 创建自己的应用 新应用的相关配置 基本信息 高级信息 微博认证流程OAuth2.0认证(核心步骤) Access Token授权有效期 接口调 ...

  9. 微信小程序如何封装api接口

    微信小程序如何封装api接口 一. 小程序接口请求流程 二,域名配置 一定要配置https,小程序上配置的域名必须是域名备案的 三.打开微信开发者工具,打开你的项目,点开详情.确认一下域名是否一一匹对 ...

最新文章

  1. Codeforces Round #323 (Div. 2) A. Asphalting Roads
  2. linux下配置 ITK
  3. 数学符号的读法和英文表示
  4. 0x00000000 处有未经处理的异常: 0xC0000005: 在位置 0x0000000000000000 发生访问冲突
  5. 如何找到ngrx action匹配的取数据代码 - 谈谈Spartacus Product Carousel控件数据的读取
  6. 实践中学到的最重要的机器学习经验!
  7. 长春学校计算机科学技术学院,长春大学计算机科学技术学院
  8. 企业微信加密消息体_用企业微信小程序发送消息
  9. golang切片转为字符串,字符串转切片
  10. linux ip to int,linux ip选项处理(二)
  11. 随手练——HDU Safe Or Unsafe (小根堆解决哈夫曼问题)
  12. Linux运维之道之网络基础学习1.0
  13. Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (4)
  14. floyd与传递闭包
  15. 通过精读一本英文技术书籍搞定英语
  16. TBC声望 恢复萨满 炼金 宏 附魔300-375
  17. 如何在物联网平台创建一个千里传音产品?
  18. 阿里云服务器被攻击黑洞怎么办?
  19. VSCode 工具常用插件
  20. 软件体系结构的分析与测试,软件体系结构分析与评价,software architecture analysis and evaluation,音标,读音,翻译,英文例句,英语词典...

热门文章

  1. linux安装oem环境,【OEM】 oem12c_install_for_linux
  2. python官网下载哪个版本好玩_Python官网不同版本的下载
  3. 德云斗笑社何九华为什么没参加_江西省会为什么是南昌?
  4. QT如何让窗口放置在屏幕正中间
  5. 【企业管理】高效会议关注点
  6. 打包无法识别lombok
  7. 笔记-计算机网络基础-计算机网络分类-总线型-星型-环状-树形-网状-网络拓扑结构...
  8. Linux挂载Linux共享文件夹
  9. Vue+Openlayers实现显示图片并分优先级多图层加载
  10. SpringBoot中使用yml配置文件以及配置类实现文件上传下载路径的修改