Ive得到ejabberd作爲我的XMPP服務器,這裏是我的PHP代碼:XMPP握手(DIGEST-MD5 SASL)
$stripped = strip_tags($returnTwo); // remove the xml tags from the response stanza
$decoded = base64_decode($stripped); // decode the jibberish
$regex = "([0-9]{8,})"; // create regex to extract the nonce
preg_match($regex, $decoded, $noncearr); // extracts nonce
$nonce = $noncearr[0]; // finally, we can put the nonce into a variable to continue...
// 1. Create a string of the form "username:realm:password". Call this string X.
$x = "username:server.dyndns.org:password";
// 2. Compute the 16 octet MD5 hash of X. Call the result Y.
$y = md5($x);
// 3. Create a string of the form "Y:nonce:cnonce:authzid". Call this string A1.
$a = "$y:$nonce:$cnonce:[email protected]/webchat";
// 4. Create a string of the form "AUTHENTICATE:digest-uri". Call this string A2.
$a2 = "AUTHENTICATE:xmpp/server.dyndns.org";
// 5. Compute the 32 hex digit MD5 hash of A1. Call the result HA1.
$ha1 = md5($a1);
// 6. Compute the 32 hex digit MD5 hash of A2. Call the result HA2.
$ha2 = md5($a2);
// 7. Create a string of the form "HA1:nonce:nc:cnonce:qop:HA2". Call this string KD.
$kd = "$ha1:$nonce:00000001:$cnonce:auth:$ha2";
// 8. Compute the 32 hex digit MD5 hash of KD. Call the result Z.
$z = md5($kd);
$b64z = base64_encode($z);
$respond = "<response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>$b64z</response>";
// initialize curl again
$sendThree = curl_init("http://localhost:5280/http-bind");
curl_setopt($sendThree, CURLOPT_POST, 1);
curl_setopt($sendThree, CURLOPT_POSTFIELDS, $respond);
$returnThree = curl_exec($sendThree);
curl_close($sendThree); // close the curl connection
我的問題是,服務器返回一個 「1」。多數民衆贊成它,沒有接受,沒有錯誤,只是一個數字1.在這之前的所有步驟都返回了預期的結果,但是這個部分即將遇到麻煩。即時通訊新的PHP(這將只是我的第二個頁面創建)所以即時通訊想知道如果我正確地跟蹤SASL步驟,或者如果它是ejabberd的問題?
如果您使用BOSH,我相信你有包括''