OpenAPI系列: 六、OpenAPI策略分析

 

一、如何注册

  • 为什么要注册?

访问 OpenAPI必须拥有Consumer Key和Consumer Secret。

  • 如何注册?

要获取Consumer Key及Consumer Secret,需要消费方(Consumer)向服务提供方申请注册,服务提供方审核通过后会向消费方分配Consumer Key和Consumer Secret

  • 注册时需提供什么信息?

消费方注册时需要向服务提供方提供以下信息:

条目说明
消费方名称第三方名称
消费方电子邮箱API变化时方便通知
消费方OAuth请求URL地址

消费方进行OAuth验证,获取令牌及密钥的请求URL地址(不包含参数部分)

如:http://youwebsite/request_token

消费方OAuth回调URL地址

消费方OAuth验证通过后的回调URL地址(不包含参数部分)

如:http://youwebsite/request_token_ready

 

 

二、如何签名

对 OpenAPI 进行REST请求时有如下几种参数:

API方法api_method
不需签名参数UnSignArguments
需签名参数SignArguments
签名api_signature

注意:各参数值需要进行url encode编码(尤其中文时)

调用API时需要对第3种参数进行签名,签名步骤如下:

No.说明
1所有需签参数名称必须小写
2所有参数值要进行url encode编码(尤其中文时),把编码结果转小写
3签名参数按字母升序排序
4合成签名字符串,合成时把“签名密钥”放到最前面,然后把已排序的需签名参数清单按照“参数名称+参数值”的方式追加到字符串
5对合成的签名字符串进行 UTF8 编码
6用MD5对签名字符串进行加密生成32位签名

第4步合成签名串规则如下:

签名密钥参数名称参数值参数名称参数值......
 

关于签名密钥的特殊说明:

调用API使用的签名密钥
OpenAPI.OAuth.RequestTokenoauth_consumer_secret
Othersoauth_token_secret

 

UTF8编码及MD5加密的C#参考实现代码如下:

using System.Security;
using System.Security.Cryptography;
using System.Text;

 

//MD5加密
public static string GetMd5String(string str)
{
// First we need to convert the string into bytes, which
// means using a text encoder.
byte[] unicodeText = System.Text.Encoding.UTF8.GetBytes(str);

// Now that we have a byte array we can ask the CSP to hash it
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(unicodeText);

// Build the final string by converting each byte
// into hex and appending it to a StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.Length; i++)
{
sb.Append(result[i].ToString("x2"));
}

// And return it
return sb.ToString();
}

 

三、请求REST格式

请求REST格式由以下几部分组成:

  • 请求REST地址,如:

http://youserverwebsite/api/rest
  • 调用API方法,如:

?api_method=OpenAPI.OAuth.RequestToken
  • 不需签名参数,如:

&oauth_consumer_key=*************
  • 需签名参数,如:

&oauth_timestamp=****&oauth_nonce=****&oauth_version=****
  • 签名,如:

&api_signature=****

 

完整请求REST串:

http://youserverwebsite/api/rest?

api_method=OpenAPI.oauth.requesttoken

&oauth_consumer_key=****

&oauth_nonce=a65c5e5e903942a994bcb07250431e2b

&oauth_timestamp=1277216551

&oauth_version=1.0

&api_signature=6431e9d5b8508a2177920e8c3c624b1b

 

四、请求REST返回格式 

请求REST返回格式为xml格式或者json格式,目前仅支持xml格式,示例如下:

<rsp method="openapi.oauth.authorizetoken" flag="True" code="" desc="ok">
  <data>    <token>4941c6de38650e58e75a1536d847c2b6</token>
    <token_secret>c48bcf5ba5166a5b5c409e233811025b</token_secret>  </data></rsp>

返回结果格式说明:

参数名称备注说明
method请求的API方法名称
flag请求成功与否标识:true=成功;false=失败;
code结果状态码
desc结果说明
data结果数据

 

 

 

[返回导航]

转载于:https://www.cnblogs.com/liuxiaojun/archive/2010/09/03/openapi_plot.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
====================当前版本信息==================== 当前版本:V1.0.1 发布日期:2012-08-02 文件大小:839K (压缩后2.90MB) 本程序参考了PHP_SDK_V3.0.2包的设计,包含实现了此包中所有功能。 1、为了照顾到低版本用户使用了.Net 2.0开发,所以没能使用.Net高版本提供的json序列化功能,所以使用了Newtonsoft.Json控件,非常感谢此控件作者,控件相关信息请搜索。 2、SocketObj.cs、Sort.cs两个类以及UrlEncode(.Net自带的方法有大小写问题)来自网络,感谢原作者。 3、hmac-sha1的加密也翻阅了好到网络资料,感谢那些分享经验的大师们。 4、TestOpenAPI项目中Web.config文件设置appid、appkey就可以调试了。 5、在实例文件中有支付相关的实例方法,由于我的应用没能够申请此功能,所以没有经过测试,大家用的时候遇到问题随时沟通。 另外,附调试方式: 1.应用管理 - 编辑应用 - 平台信息 - (左侧的)QQ空间平台信息 2.填写“应用开发地址”这个貌似不支持端口好,所以需要把TestOpenAPI项目配置成本地虚拟目录,总之能使用80端口访问项目即可。 3.填写“高度”我写了600,平台地址不用填(调试阶段)。 4.保存。 5.保存成功后点击左侧的调试按钮就进入QQ空间应用页面。我调试的时候不是直接进入应用,而是往下拉会看见应用信息,点击应用的标题就进入应用了。 开发过程中遇到的问题以及处理办法: 1.签名总是不对,最后发现是appkey配置错了,竟然复制了另外一个应用的,郁闷啊,这个错误聪明的你们是不会犯的啦 2.“1002,no login”错误,当时我是把OpenID和openkey写死了调试的,所以是openkey过期了。官方文档说没开通相应平台也报这个错误。 3.没遇到其他问题,祝你们也要这么顺利哦 ====================文件结构信息==================== TencentOpenAPI项目: SnsNetwork.cs:发送HTTP网络请求类 SnsSigCheck.cs:请求参数签名生成类 SnsStat.cs: 统计上报类 OpenApiV3.cs:OpenAPI访问类 TestOpenAPI项目: Test_OpenApiV3.aspx: 示例代码 sha1.aspx : 脚本实现hmac-sha1加密,用于判断C#程序生成的签名是否正确 本SDk示例代码中并没有列出所有的OpenAPI,腾讯开放平台V3版OpenAPI正在不断增加中,详见API列表: http://wiki.open.qq.com/wiki/API3.0文档 http://wiki.open.qq.com/wiki/API文档 ====================联系我们==================== 腾讯开放平台官网:http://open.qq.com/ 您可以访问我们的资料库获得详尽的技术文档:http://wiki.open.qq.com/wiki/首页 官方论坛下载地址:http://bbs.open.qq.com/forum.php?mod=viewthread&tid=76444&extra=page=1 相比1.0.0的版本《基于QQ OpenAPI V3的.Net SDK(原创)》(http://download.csdn.net/detail/xiyangyu/4470767)新增了支付相关的方法和实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值