Я уже два дня бьюсь головой об этой проблеме, и я надеюсь, что кто-то на этом сайте может мне помочь.
Я живу в Китае и у меня есть сервер (общий хостинг)расположен в Гонконге.Я настроил прокси-сервер PHP Twitter на сервере и подключаюсь к нему через Twitter для iPhone (AKA Tweetie).Он прекрасно работал в течение прошлого года или около того.
Twitter для iPhone был обновлен вчера и теперь требует авторизацию XAuth для подключения к twitter.com (ранее он использовал Basic Auth).После обновления я не смог аутентифицировать себя, используя мой прокси-сервер, несмотря на внесение (как я считаю,) соответствующих изменений в мой прокси.
Концептуально это не очень сложно.проблема взломать.Для аутентификации на twitter.com с использованием XAuth приложение должно отправить запрос POST на https://api.twitter.com/oauth/access_token. Тело POST должно иметь форму:
x_auth_username=aUserName&x_auth_mode=client_auth&x_auth_password=aPassword
Кроме того, запрос POST должен иметьЗаголовок авторизации в форме:
OAuth oauth_signature_method="HMAC-SHA1", oauth_consumer_key="IQKbtAYlXsomeLGkey0HUA", oauth_nonce="8B265865-3F57-44FF-BCD6-E009EA7D4615", oauth_signature="sbwblaho64blahr934mZQ+23DYQ=", oauth_timestamp="1277356846", oauth_version="1.0"
Итак, я использовал .htaccess для копирования заголовка Auth в переменную $ _REQUEST, используя этот код:
RewriteCond %{HTTP:Authorization} ^OAuth.*
RewriteRule (.*) index.php?OAuth=%{HTTP:Authorization} [QSA,L]
Мой прокси копирует содержимое этой переменной $ _REQUEST в переменную экземпляра с именем $ self-> oauthHeader.Затем я добавляю его в качестве заголовка к моему запросу cURL, используя следующий код:
if (isset($this->oauthHeader)) {
$headers[] = 'Authorization: '.$this->oauthHeader;
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$curl_options[CURLOPT_HTTPHEADER] = $headers;
}
Я также добавляю тело POST исходного запроса в тело POST cURL, используя:
$curl_options[CURLOPT_POST] = true;
$curl_options[CURLOPT_POSTFIELDS] = @file_get_contents("php://input");
Я отправляю запрос cURL в Twitter.Кажется, все работает правильно, но я неизбежно получаю ответ «Не удалось проверить подпись и маркер oauth».
Я нахожусь в тупике, и я не могу на всю жизнь думать, что яя делаю неправильноЛюбая помощь будет высоко ценится.