Bir Apache sunucu üzerinde Xauth destekler PHP Twitter vekil

0 Cevap php

Ben şimdi yaklaşık iki gün boyunca bu soruna karşı başımı beceriyor oldum, ve ben bu sitede birisi bana yardımcı olabilir umuyorum.

Ben Çin'de yaşayan ve Hong Kong'da bulunan bir sunucu (hosting paylaşılan) var. Ben sunucu üzerinde bir PHP Twitter proxy kurdum, ve ben iPhone (AKA Tweetie) için Twitter kullanan vekil bağlanın. Bu son bir yıl ya da öylesine güzel çalıştı.

IPhone için heyecan dün güncellenmiş ve şimdi (daha önce, bu temel Yet kullanılır) twitter.com bağlanmak Xauth yetkisi gerektirir edildi. Güncellemeden bu yana (Ben olacağına inandığımız) benim proxy uygun değişiklikleri yapma rağmen, benim vekil kendimi kullanarak kimlik doğrulaması mümkün olmamıştır.

Kavramsal olarak, bu çatlak için çok zor bir sorun değildir. Xauth kullanarak twitter.com ile kimlik doğrulaması için, bir uygulama https://api.twitter.com/oauth/access_token bir POST isteği göndermeniz gerekir. POST gövdesi biçiminde olması gerekir:

x_auth_username=aUserName&x_auth_mode=client_auth&x_auth_password=aPassword

Buna ek olarak, POST talebi şeklinde bir Yetkilendirme başlık sahip olmalıdır:

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"

. Peki, ne yaptık, bu kodu kullanarak bir $ _REQUEST değişkene Auth başlığını kopyalamak için kullanılan htaccess olduğunu:

RewriteCond %{HTTP:Authorization} ^OAuth.*
RewriteRule (.*) index.php?OAuth=%{HTTP:Authorization} [QSA,L]

Benim vekil kopyalar bir örnek değişkene $ _REQUEST değişkenin içeriği $ self-> oauthHeader çağırdı. Sonra, ben aşağıdaki kodu kullanarak benim cURL isteğine bir başlık olarak eklemek yapmak:

if (isset($this->oauthHeader)) {    
    $headers[] = 'Authorization: '.$this->oauthHeader;
    $headers[] = 'Content-Type: application/x-www-form-urlencoded';
    $curl_options[CURLOPT_HTTPHEADER] = $headers;
}

Ben de kullanarak Curl POST vücuduna orijinal isteğin POST vücut eklemek:

$curl_options[CURLOPT_POST] = true;
$curl_options[CURLOPT_POSTFIELDS] = @file_get_contents("php://input");

Ben Twitter cURL isteği gönderebilirsiniz. Her şey düzgün görünüyor, ama kaçınılmaz bir yanıt alırsınız "oauth imza ve belirteç doğrulamak için başarısız oldu."

Benim zekâ sonunda, ve ben bana yaşam için ben ne yapıyorum yanlış düşünemiyorum. Herhangi bir yardım çok takdir.

0 Cevap