2012-09-15 97 views
1

我正在嘗試生成Oauth簽名以便從我的Android應用程序驗證flickr.com中的用戶。Oauth簽名未生成

根據flickr.com上的文章,我必須發送簽名請求才能獲得簽名。到flickr.com引導頁的超鏈接是:

http://www.flickr.com/services/api/auth.oauth.html#request_token

據後,我必須發送一個請求這樣對Flickr的服務器,以獲得簽名密鑰:

http://www.flickr.com/services/oauth/request_token 
?oauth_nonce=89601180 
&oauth_timestamp=1305583298 
&oauth_consumer_key=653e7a6ecc1d528c516cc8f92cf98611 
&oauth_signature_method=HMAC-SHA1 
&oauth_version=1.0 
&oauth_callback=http%3A%2F%2Fwww.example.com 

我已經從我的應用程序發送了上述格式的請求,但是我收到的所有內容都是錯誤消息,說oauth_problem = parameter_absent & oauth_parameter_absent = oauth_signature

我的要求的代碼是:

HttpGet get = new HttpGet("http://www.flickr.com/services/oauth/request_token?oauth_nonce="+nonce+"&oauth_timestamp="+ts+"&oauth_consumer_key=****&oauth_signature_method=HMAC-SHA1&oauth_version=1.0"); 

其實問題在於,通過它我請求籤名的URL以錯誤的方式作出響應。它應該返回簽名,並要求籤名。

回答

1

簽名步驟沒有請求。您可以獲取到目前爲止的URI,並將其轉換爲基本字符串,如文檔中所示(URL編碼其部分等)。您使用的HMAC-SHA1算法需要2個參數keydata。作爲datakey

是消費者的祕密和令牌密鑰的串接值,由「&」分開使用基本字符串。

你從後面算法的值(簽名),然後添加到您的URI與

&oauth_signature={ALGORITHM_OUTPUT} 

使用這個新的URI,那麼你可以請求令牌。

如果您認爲這樣做太繁重,請查看一些Java OAuth庫,例如scribe-java