ACCESS初浪微博——OAuth

及时几乎龙在召开新浪微博客户端,由于以前接触的几近也Socket编程,而对于Http协议编程还设有很多盲区,所以费了很多功,好了、闲话少说,总结一下。

一、OAuth概述
为用新浪微博开放平台提供的API(应用程序接口),你得事先挂号一个施用。我们见面吃各个一个行使一个直属的App
Key和App
Secret。Key跟Secret的应用方式以及任何部分协商被之公钥私钥的方案相接近,你可利用你所熟悉的编程语言将key和secret结合,为公发之每个请求加加签名,以这来向新浪微博开放平台表明自己身份的合法性。

其次、OAuth认证中心流程

OAuth提供零星种证方式:query-string和http
headers。我们引进下http header进行认证。

其中需之几只URL

public const string
HTTP_REQUEST_TOKEN = “http://api.t.sina.com.cn/oauth/request\_token”;
public const string HTTP_AUTHORIZE = “http://api.t.sina.com.cn/oauth/authorize”;
public const string HTTP_ACCESS_TOKEN = “http://api.t.sina.com.cn/oauth/access\_token”;

public const string
HTTP_VERIFY = “http://api.t.sina.com.cn/account/verify\_credentials.json”;

 

老三、请求签名

怀有的OAuth请求使用同一的算法来变化(signature
base string)签名字符基串和签名。

base
string是把http方法名,请求URL以及告参数用&字符连起来后开URL
Encode编码。具体来讲,base
string由http方法名,之后是&,接着是过url编码(url-encoded)之后的url和做客路径和&。接下来,把富有的伸手参数包括POST方法体中之参数,经过排序(按参数号称展开文本排序,如果参数誉为来重复则又安参数值进行双重项目排序),使用%3D代=号,并且使用%26看成每个参数之间的分隔符,拼接成一个字符串。

是算法可以略表示也:

httpMethod + "&" +
  url_encode(  base_uri ) + "&" +
  sorted_query_params.each  { | k, v |
      url_encode ( k ) + "%3D" +
      url_encode ( v )
  }.join("%26")

无论生成何种OAuth1.0请求,生成BASE
STRING的平整始终不变。

乍浪微博要求具有的OAuth请求都施用HMAC-SHA1竟法生成签名。

 

注意:
1)用于转移“签名字符基串”的参数是设通过排序的。
2)用于转移“签名字符基串”的参数是求被寓所有参数[席卷Get、Post请求的持有参数,但是来一个特例:即采取Post请求
以 “multipart/form-data”
格式传输文件时、只有以oauth_千帆竞发的参数才会与生成“签名字符基串”]
3)每一个介入生成“签名字符基串”的参数值都要透过URL Encode编码。

OAuth提供个别种植证方法:query-string和http
headers。

使是Querty-String认证大致的要格式如下:
……&oauth_signature=UrlEncoHMAC-SHA1算法对“签名字符基串”进行加密生成的签]);

如若是Http
headers认证,则需要在http协议头中加入一个键值对:
“键”为 “Authorization”
“值”为   “OAuth “+【所有参数【包括oauth_signature这个参数、生成签名字符基串需要参数排序,但大成这字符串不欲参数排序】使用
=分割 键与价值,使用“逗号加一个空格”作为参数间的隔符
】,生成后底款式大体为:”OAuth oauth_consumer_key=\”{0}\”,
oauth_signature_method=\”HMAC-SHA1\”,oauth_timestamp=\”{1}\”,
oauth_nonce=\”{2}\”, oauth_version=\”1.0\”,
oauth_token=\”{3}\”,oauth_signature=\”{4}\””

有关更多之初浪微博OAuth请参见:http://open.weibo.com/wiki/Oauth

相关文章