2010-06-02 35 views
11

Xin lỗi vì đã gây phiền hà cho bạn với một số khác "Không xác thực được chữ ký và mã thông báo oauth", nhưng tôi không thể tìm ra điều gì sai với yêu cầu của mình.Tại sao Twitter trả về "Không thể xác thực chữ ký và mã thông báo oauth?"

Tôi đang xây dựng chữ ký của tôi từ chuỗi này:

POST&http%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%3A%2F%2Fcraiga.id.au%2Ftwitter%2Fconnected%26oauth_consumer_key%3Dtm5...DOg%26oauth_nonce%3D8...22b%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1275453048%26oauth_version%3D1.0 

Từ đó tôi tạo ra một chữ ký 28 nhân vật bằng cách sử dụng mã PHP sau:

base64_encode(hash_hmac('sha1', $raw, 'YUo...HIU' . '&', true)); 

Sử dụng chữ ký này, tôi gửi sau yêu cầu:

POST http://api.twitter.com/oauth/request_token HTTP/1.1 
Host: api.twitter.com 
Pragma: no-cache 
Accept: */* 
Proxy-Connection: Keep-Alive 
Authorization: OAuth oauth_nonce="3D8...22b", oauth_callback="http%3A%2F%2Fcraiga.id.au%2Ftwitter%2Fconnected", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1275453048", oauth_consumer_key="tm5...DOg", oauth_signature="aYd...c6E%3D", oauth_version="1.0" 
Content-Length: 266 
Content-Type: application/x-www-form-urlencoded 

oauth_callback=http%3A%2F%2Fcraiga.id.au%2Ftwitter%2Fconnected&oauth_consumer_key=tm5...DOg&oauth_nonce=3D8...22b&oauth_signature_method=HMAC-SHA1&oauth_timestamp= 1275453048&oauth_version=1.0 

Tôi nhận được phản hồi sau từ Twitter gửi yêu cầu này:

HTTP/1.1 401 Unauthorized 
Date: Wed, 02 Jun 2010 04:40:14 GMT 
Server: hi 
Status: 401 Unauthorized 
X-Transaction: 1275453614-48409-7443 
Last-Modified: Wed, 02 Jun 2010 04:40:14 GMT 
X-Runtime: 0.01083 
Content-Type: text/html; charset=utf-8 
Content-Length: 44 
Pragma: no-cache 
X-Revision: DEV 
Expires: Tue, 31 Mar 1981 05:00:00 GMT 
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 
Set-Cookie: k=58.161.42.101.1275453614748615; path=/; expires=Wed, 09-Jun-10 04:40:14 GMT; domain=.twitter.com 
Set-Cookie: guest_id=12754536147577949; path=/; expires=Fri, 02 Jul 2010 04:40:14 GMT 
Set-Cookie: _twitter_sess=BAh7CToPY3JlYXRlZF9hdGwrCKaq9fYoAToRdHJhbnNfcHJvbXB0MDoHaWQi%250AJWU0ZDFhMGQzMWU0NTZjMzJiZWFkNWUzMTA4ZDRjOTg3IgpmbGFzaElDOidB%250AY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--f1e5c7649858a1694f24307504354846bbc1d16b; domain=.twitter.com; path=/ 
Vary: Accept-Encoding 
Connection: close 

Failed to validate oauth signature and token 

Nếu bất cứ ai có thể truyền sáng vì sao điều này có thể không thành công, tôi rất muốn nghe.

+0

Một Twitter phát triển ủng hộ đã [chỉ ra] (http://groups.google.com/group/twitter-development-talk/browse_thread/thread/92f6fbc209b3463d/fe5226c33ecfdc74? # fe5226c33ecfdc74) mà tôi không nên là 'POST'-ing các trường 'oauth_ *' cũng như bao gồm chúng trong tiêu đề 'Authorize', nhưng vẫn không có may mắn với' GET' hoặc rỗng 'POST'. –

+1

Xem tại đây: http://stackoverflow.com/questions/3295466/ –

+3

Tôi thừa nhận đây không thực sự là câu trả lời, nhưng tôi gặp vấn đề này khi sử dụng gói PECL OAuth. [Rasmus Lerdorf đã viết một hướng dẫn về cách sử dụng nó.] (Http://toys.lerdorf.com/archives/50-Using-pecloauth-to-post-to-Twitter.html) –

Trả lời

1

Bạn đang sử dụng thông tin sai để tạo chữ ký. Bạn nên sử dụng ...

oauth_callback = http% 3A% 2F% 2Fcraiga.id.au% 2Ftwitter% 2Fconnected & oauth_consumer_key = TM5 ... chó & oauth_nonce = 3D8 ... 22b & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1275453048 & oauth_version = 1,0

... để tạo chữ ký (đọc: không sử dụng 'POST' và yêu cầu URI)

để biết thêm thông ... see Twitter Developers: Creating a signature

1

Vấn đề tồn tại nguyên nhân thời gian của bạn máy chủ không synhronized với twitter thời gian 100% giải pháp trên máy chủ chạy (đối với đồng hồ đồng bộ)

sudo ntpdate -s time.nist.gov 

và kiểm tra thời gian twitter với

lynx --dump --head https://api.twitter.com/1/help/test.json 
1

tôi đã có vấn đề tương tự gần đây trong việc cố gắng kết nối với Twitter từ Spout (Storm); phải đồng bộ hóa đồng hồ Ubuntu của tôi sử dụng:

sudo apt-get install ntp

Các vấn đề liên quan