这几乎上在举行新浪微博客户端,由于原先接触的大多为Socket编程,而于Http协议编程还设有很多盲区,所以费了多功夫,好了、闲话少说,总结一下。

一、OAuth概述
以利用初浪微博开放平台提供的API(应用程序接口),你用事先挂号一个利用。我们见面被各国一个采用一个隶属的App
Key和App
Secret。Key跟Secret的下方式与其他一些商议中之公钥私钥的方案相近似,你得运用你所耳熟能详的编程语言将key和secret结合,为你产生之每个请求加加签名,以之来向新浪微博开放平台表明自己身份的合法性。

其次、OAuth认证中心流程

json 1

json 2

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

相关文章

网站地图xml地图