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

简介:

马上就要春节放假.年底活动安排的比较多.庸庸碌碌了一阵,忙中偷闲 这篇博文已经在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.     
  10.            QWeiboRequest request = new QWeiboRequest();    
  11.            return ParseToken(request.SyncRequest(url, "GET", oauthKey, parameters, null));    
  12.        } 

在对应参数中需要指定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.      
  14.             QWeiboRequest request = new QWeiboRequest();    
  15.             return ParseToken(request.SyncRequest(url, "GET", oauthKey, parameters, null));    
  16.         } 

通过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

相关文章
|
21天前
|
JSON 数据挖掘 API
1688API最新指南:商品详情接口接入与应用
本指南介绍1688商品详情接口的接入与应用,该接口可获取商品标题、价格、规格、库存等详细信息,适用于电商平台开发、数据分析等场景。接口通过商品唯一标识查询,支持HTTP GET/POST请求,返回JSON格式数据,助力开发者高效利用1688海量商品资源。
|
1月前
|
存储 供应链 监控
1688商品数据实战:API搜索接口开发与供应链分析应用
本文详细介绍了如何通过1688开放API实现商品数据的获取与应用,涵盖接入准备、签名流程、数据解析存储及商业化场景。开发者可完成智能选品、价格监控和供应商评级等功能,同时提供代码示例与问题解决方案,确保法律合规与数据安全。适合企业开发者快速构建供应链管理系统。
|
19天前
|
人工智能 数据可视化 API
开箱即用的可视化AI应用编排工具 Langflow,可调用魔搭免费API作为tool
ModelScope 社区基于优秀的开源可视化AI应用编排工具 Langflow 搭建了创空间,以方便社区开发者基于社区开源模型及免费魔搭 API-Inference,快速创建Agent应用、RAG应用并将其部署为API服务。
168 14
|
1月前
|
安全 Java API
理解Akamai EdgeGrid认证在REST API中的应用
Akamai作为内容分发和云服务的领导者,提供了EdgeGrid平台以提升Web应用的速度、可靠性和安全性。EdgeGrid认证(Auth)通过基于令牌的安全机制,利用HMAC-SHA256签名、时间戳和Nonce确保API请求的合法性与唯一性。文章详细介绍了在Python、Java和Go语言中实现EdgeGrid认证的方法,并探讨了如何使用Apipost、Postman和curl工具进行测试。这一认证机制是保障与Akamai REST API安全交互的关键,助力开发者构建更安全高效的数字平台。
|
2月前
|
数据采集 搜索推荐 API
小红书笔记详情 API 接口的开发、应用与收益
小红书(RED)作为国内领先的生活方式分享平台,汇聚了大量用户生成内容(UGC),尤其是“种草”笔记。小红书笔记详情API接口为开发者提供了获取笔记详细信息的强大工具,包括标题、内容、图片、点赞数等。通过注册开放平台账号、申请API权限并调用接口,开发者可以构建内容分析工具、笔记推荐系统、数据爬虫等应用,提升用户体验和运营效率,创造新的商业模式。本文详细介绍API的开发流程、应用场景及潜在收益,并附上Python代码示例。
327 62
|
21天前
|
JSON API 开发者
京东API最新指南:商品视频接口接入与应用
在电商领域,商品视频能有效提升销售业绩。京东商品视频接口助力开发者获取商品视频信息(播放链接、时长、格式、封面图等),通过 HTTP GET/POST 请求返回 JSON 数据,便于集成到各类应用中,优化展示效果与用户体验。本指南详解接口接入与使用方法。
|
1月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
1月前
|
JSON API 开发者
1688 快递费用 API 接口的技术剖析与应用
1688快递费用API接口为企业和开发者提供自动化、高效化的快递费用查询服务,打破人工查询的繁琐局面。通过输入寄件与收件地址、商品重量、体积及选择快递公司等信息,接口精准计算费用并返回结果,支持中通、圆通等主流快递。输出内容包括快递费用、预估时效及附加费说明,助力电商精细化运营。Python示例代码展示了如何使用requests库发起POST请求并解析响应数据,实现费用查询自动化。
105 10
|
1月前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
1月前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。

热门文章

最新文章