close

先說最開始的get request token,我拿oAuth 1.0的官方文件和plurk API說話


Authorization: OAuth realm="http://sp.example.com/",
oauth_consumer_key="0685bd9184jfhq22",
oauth_token="ad180jjd733klru7",
oauth_signature_method="HMAC-SHA1",
oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
oauth_timestamp="137131200",
oauth_nonce="4572616e48616d6d65724c61686176",
oauth_version="1.0"

 

讓我慢慢解釋:

 

OAuth realm:
就是拿request token的URL, 以plurk作例子就是 http://www.plurk.com/OAuth/request_token


 

oauth_consumer_key:
在你於http://www.plurk.com/PlurkApp/ 登記你的APP後,你可以於測試工具的頁面中找到APP KEY, 這就是你要用的oauth_consumer_key了, 先抄下來吧, 這個key是唯一的

 


 

oauth_token:
這東西就是get request token的目標之一,拿到它才廳繼續下去

 


 

oauth_signature_method:
這東西,超級麻煩的(挖鼻孔
OAUTH官方文件提到的signature method,也就是說簽署的加密方式,有三種:
HMAC-SHA1, RSA-SHA1, PLAINTEXT
而plurk要求的加密方式是HMAC-SHA1,因此其他兩個有興趣請自己Google

 


 

oauth_signature:
oauth簽署,就是由一堆東西以特定的字串為私鑰(secret key)按指定的加密算式進行加密
按照plurk要求的以HMAC-SHA1算法進行簽署加密的話,需要數項argument

1.oauth_nonce - 8個byte的隨機數,就是byte串列有8個數字元素這樣...

2.oauth_timestamp - Oauth官網的解釋: January 1, 1970 00:00:00 GMT 與現在相距的秒數, 就是拿現在的時間減1970年1月1日再拿首10位數字得出的

3.oauth_version - 別懷疑Plurk要求就是"1.0"(茶

4.oauth_signature_method - HMAC-SHA1

5.oauth_consumer_key - 參考上面吧(茶

6.oauth_request_method - 在get request token中是"GET"

7.PLURK_REQUEST_URL - 就是上面的OAuth realm

有了這7項後,還是不能製作加密簽署的,因為這只是Base String,也就是一開始說的"一堆東西"的成份而已,這也要經過一點處理,因為HTML編碼的關係,如果不先行編碼成HTML看得懂的格式,Server就會給你Status 400讓你吃閉門羹哦
有關Base String轉碼的JAVA Code

之後才到本番的製作加密簽署,一開始說了還需要"特定的字串為私鑰",這個secret key就是測試頁面內的APP Secret!
加密簽署製作的JAVA Code

 


 


就這麼多(茶
甚麼你說這還不是request token?
對啊!都還沒把資料傳到Server, 怎樣Request?(茶
下一篇就會寫HTTP GET Request的Code了,另外也會加上在Android處理HTTP Request的情況中,防止Main Activity把Method強制終止而把Request放到Thread中運行的方法

arrow
arrow
    創作者介紹
    創作者 FGOinai 的頭像
    FGOinai

    FGO Blog

    FGOinai 發表在 痞客邦 留言(0) 人氣()