2010-09-29 22 views
2

我試圖通過Twitter API和OAuth更新我的狀態。如何使用Perl更新我的Twitter狀態並且只有LWP :: UserAgent?

我卡在最後一步,狀態更新。這是我的代碼。

標題:

$ua->default_header('Content-Type' => "application/x-www-form-urlencoded"); 
$ua->default_header('oauth_signature' => "$signature"); 
$ua->default_header('Authorization' => '"OAuth realm="Twitter API"'); 
$ua->default_header('oauth_consumer_key' => "blablabla"); 
$ua->default_header('oauth_nonce' => "$nonce"); 
$ua->default_header('oauth_signature_method' => "HMAC-SHA1"); 
$ua->default_header('oauth_timestamp' => "$epoch"); 
$ua->default_header('oauth_token' => "$token_final"); 
$ua->default_header('oauth_version' => "1.0"); 

職,http://api.twitter.com/1/statuses/update.json與LWP用戶代理製作:

'oauth_signature'=>"$signature", 
'status'=>'Bientot', 
'oauth_consumer_key'=>'blabla', 
'oauth_signature_method'=>'HMAC-SHA1', 
'oauth_nonce'=>"$nonce", 
'oauth_timestamp'=>"$epoch", 
'oauth_token'=>"$token_final", 
'oauth_version'=>"1.0", 

和我所得到的:

HTTP/1.1 401 Unauthorized 
Cache-Control: no-cache, max-age=300 
Connection: close 
Date: Wed, 29 Sep 2010 14:36:48 GMT 
Server: hi 
Vary: Accept-Encoding 
WWW-Authenticate: Basic realm="Twitter API" 
Content-Length: 75 
Content-Type: application/json; charset=utf-8 
Expires: Wed, 29 Sep 2010 14:41:48 GMT 
Client-Date: Wed, 29 Sep 2010 14:36:49 GMT 
Client-Peer: 128.242.240.29:80 
Client-Response-Num: 1 
Set-Cookie: _twitter_sess=BAh7DjoTc2hvd19oZWxwX2xpbmswOg5yZXR1cm5fdG8iYWh0dHA6Ly9hcGku%250AdHdpdHRlci5jb20vb2F1dGgvYXV0aG9yaXplP29hdXRoX3Rva2VuPXpMc2d2%250AV2U5aHBvSWNOSW5rOFFkYUNrN1NQSlozZW1VcUNpckNxWkZvOhVpbl9uZXdf%250AdXNlcl9mbG93MDoTcGFzc3dvcmRfdG9rZW4iLWZiNzEyNTAzMGNiYTk1NTU1%250ANDE0OGExM2UxN2U2Yzc1ZmY2YjUzMDE6CXVzZXJpBLWRPgYiCmZsYXNoSUM6%250AJ0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2Vk%250AewA6B2lkIiU0MGUyNmQzNjRmYmI4YThlODgwN2MwZWYzYzNlOGJiYjoMY3Ny%250AZl9pZCIlZTUzZjY0OGIxMWZiOTA0OWQzM2FlOGI4NjYzZDA5NTI6D2NyZWF0%250AZWRfYXRsKwhe%252FkpTKwE%253D--3b624de9adb8de40ff8a3f0a5780f2b18b6abd44; domain=.twitter.com; path=/ 
Status: 401 Unauthorized 
X-Runtime: 0.00264 

{"request":"/1/statuses/update.json","error":"Could not authenticate you."} 

有沒有人有一個想法?我卡在那裏,真的很沮喪。

+8

如果你使用Net :: Twitter,你既不會卡住也不會沮喪。當你避開專爲你設計的圖書館任務時,你會得到你所得到的。 – 2010-09-29 17:35:09

+0

我知道,但我們的管理員不想安裝新的模塊,如果我們可以避免它。這不是我的選擇。 – user461985 2010-09-30 08:05:57

+0

如果你使用的是Perl,但沒有使用CPAN,那麼你只能使用該語言的一半(也許更少)。也許你應該考慮升級你的系統管理員:-) – 2010-10-02 05:49:03

回答

9

那麼,如果你不想使用Net::TwitterNet::Twitter::Lite,你應該至少看看代碼,看看他們在做什麼。

根據您遇到的錯誤,您看起來沒有正確執行OAuth握手。也許它就像一個缺失的字段一樣簡單,但我懷疑你的簡單方法會丟失一些東西(我對OAuth細節一無所知 - 抱歉)。您還可以直接訪問Twitter :: Lite使用的OAuth模塊Net::OAuth::Simple來查看他們如何處理它。 ?

+0

謝謝,這就是我現在所做的,但我卡在那裏...我要再看一眼,你應該是對的。 – user461985 2010-09-30 08:04:58

0

不要使用OAuth,簡單地做舊的方式和標記源= twitterandroid到年底,像這樣:

http://api.twitter.com/1/account/rate_limit_status.json?source=twitterandroid

我測試了幾個星期前,確認方法仍然有效。請不要認爲這是一個解決方法,它只是遺留功能,將迅速消失,但可能使您現在可以做些事情。

+0

好的,謝謝!事實上,我剛剛發現如何做到這一點,如果狀態有一個「內部」,我仍然有問題,但其他方面都很好。 – user461985 2010-10-27 07:56:50

相關問題