先說最開始的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中運行的方法