Здравствуйте. Хочу написать сервис отправки icq-сообщений с сайта. За основу взял web-icq, посмотрел заголовки, все понятно, кроме одного есть переменная sig_sha256, которую мне непонятно откуда взять. Читал много форумов, нашел ответ, что эта переменная генрируется так: Code: $sessionkey = base64_encode(hash_hmac('sha256', 'пароль', 'sessionsecret', true)); $sig_sha256 = base64_encode(hash_hmac('sha256', $sessionkey, urlencode('GET-запрос'), true)); Но как бы я не старался - не получается подобрать правильный хэш. Исходные данные: пароль = "A12345"; $sessionsecret = VphV8sTeOfcRpxRs; строка запроса = "GET&http://api.icq.net/aim/startSession?a=%2FwQAAAAAAACBzNTZhSF%2FZYncgXwYMummemWPCUxPnHkJmo9a8LmVK38E0vPVFp%2BupOkE2qL5gF%2BkSe0C3rOh%2FFlsw8j9a3y07dsbrG1Aep2UynCWgZ4DOScABndofNhWsvuA%2Bgd2EwXQDpBjZl5MWUmd6JfTnsMsew9oVdBfxo0D270dFk9dwosTzLc%3D&assertCaps=0946134E4C7F11D18222444553540000&buildNumber=410&clientName=gromit&clientVersion=v0.1&events=myInfo%2Cpresence%2Cbuddylist%2Ctyping%2Cim%2CsentIM%2CdataIM%2CofflineIM%2CuserAddedToBuddyList%2Clifestream%2Cservice&f=xml&interestCaps=8eec67ce70d041009409a7c1602a5c84&k=ic1Fvhd7u8Msuxui&language=ru-ru&rawMsg=1&sessionTimeout=60&ts=1391111100" Что должно из этого получиться: sig_sha256=3uQwCJijVG6PhLrCq5QaPt%2FztDZwnZfdmIH711m6TtA%3D После этого я должен получить ответ с кодом сессии, но пока что результат - 401Authentication Required. statusDetailCode 100110011391111376 Буду благодарен за любую помощь
Зачем снова изобретать велосипед? Есть готовое решение: WebIcqPro.class.php. Подключаешь этот класс к своей программе и в путь. Выглядеть все будет примерно так: Code: <?php define('UIN', '123456'); define('PASSWORD', 'qwerty'); require_once('WebIcqPro.class.php'); $icq = new WebIcqPro(); // коннектимся if (!$icq->connect(UIN, PASSWORD)) { exit($icq->error . "\n"); } // шлем сообщение на номер 100500 $icq->sendMessage('100500', 'Привет!'); } $icq->disconnect(); ?>
Ну ё-маё! вчера пробовал этот класс, он писал мне то refused то establish, менял порты и адреса не помогало. А сегодня уже все работает. Заработался я видимо