Składnik Zend_Service_Twitter jest nadal przeznaczony dla Twitters API v1.0, który zostanie wycofany 5 marca 2013 r. Chciałem więc przygotować nową witrynę z interfejsem do Twitter API w wersji 1.1. Wszystko działa poprawnie z wersji 1.0 ale jeśli mogę zmienić adres URL z /1/
do /1.1/
nie jest on z kodu nagłówka HTTP 400 i komunikat o błędzie JSON: Bad Authentication data
(kod: 215)Zend_Service_Twitter - Make API v1.1 ready
Aby wniosek i token dostępu mieszkaliśmy tak samo i działa już bez żadnych zmian, ale jeśli chcę zweryfikować poświadczenia jak ten pojawia się błąd opisałem powyżej:
// Take a look for the code here: http://framework.zend.com/manual/1.12/en/zend.oauth.introduction.html
$accessToken = $twitterAuth->getAccessToken($_GET, unserialize($_SESSION['TWITTER_REQUEST_TOKEN']));
// I have a valid access token and now the problematic part
$twitter = new Zend_Service_Twitter(array(
'username' => $accessToken->getParam('screen_name'),
'accessToken' => $accessToken
));
print_r($twitter->account->verifyCredentials());
Zmieniłem kod verifyCredentials w Zend/Service/Twitter.php
tym do:
public function accountVerifyCredentials()
{
$this->_init();
$response = $this->_get('/1/account/verify_credentials.xml');
return new Zend_Rest_Client_Result($response->getBody());
}
// to
public function accountVerifyCredentials()
{
$this->_init();
$response = $this->_get('/1.1/account/verify_credentials.json');
return Zend_Json::decode($response->getBody());
}
Teraz dodałem przed return Zend_Json[...]
tej linii:
print_r($this->_localHttpClient->getLastRequest());
// And I get this output of it:
GET /1.1/account/verify_credentials.json HTTP/1.1
Host: api.twitter.com
Connection: close
Accept-encoding: gzip, deflate
User-Agent: Zend_Http_Client
Accept-Charset: ISO-8859-1,utf-8
Authorization: OAuth realm="",oauth_consumer_key="",oauth_nonce="91b6160db351060cdf4c774c78e2d0f2",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1349107209",oauth_version="1.0",oauth_token="hereismytoken",oauth_signature="hereisavalidsignature"
Jak można zobaczyć oauth_consumer_key
(i realm
też) jest pusta. Czy to może być błąd? Jak mogę rozwiązać ten błąd (z powodu zaostrzonej nowej wersji interfejsu API?)? Czy byłoby dobrze ustawić w jakiś sposób oauth_consumer_key
? Jeśli tak, jak mogę to zrobić?
Edit: Znalazłam też już raport o błędzie na trackerze emisyjnej Zend Framework: http://framework.zend.com/issues/browse/ZF-12409 (? Może zrobić upvote)
To nie jest bardzo opisowe nazwy klasy. A czy Zend nie napisałby tego w innej przestrzeni nazw? Rozumiem, że to po prostu poprawki, ale dobrze jest używać innej przestrzeni nazw, jeśli nadpisujesz klasę. – voidstate
To tylko przykład. – yAnTar