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.
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'. –
Xem tại đây: http://stackoverflow.com/questions/3295466/ –
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) –