Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Что не так с подписью запроса в моем коде? (http://www.flasher.ru/forum/showthread.php?t=154402)

goodguy 16.04.2011 23:02

Что не так с подписью запроса в моем коде?
 
Уже часа 4 пытаюсь подписать запрос, и все время получаю error 4: incorrect signature.
Я уже просто на грани нервного срыва. Беру даже официальный пример с контакта, заменяю в нем только timestamp, random, api_id и uid и все равно выдает такую же ошибку...

Вот мой код:
Код:

function retrieveBalance($viewerId, $apiId, $apiUrl)
        {
               
                $random = rand(1000000, 10000000);
                $timestamp = time();
                $stringForSig =  "api_id=". $apiId
                                        . "method=secure.getBalance"
                                        . "random=" . $random
                                        . "timestamp=" . $timestamp
                                        . "uid=" . $viewerId
                                        . "v=2.0"
                                        . API_SECRET
                                        ;
               
                $signature = md5($stringForSig);
               
               
                $request = $apiUrl        . "?api_id=" . $apiId
                                        . "&format=JSON"
                                        . "&method=secure.getBalance"
                                        . "&random=" . $random
                                        . "&sig=" . $signature
                                        . "&timestamp=" . $timestamp
                                        . "&uid=" . $viewerId
                                        . "&v=2.0"
                                        ;               
                                                       
                $request_result = requestUrl($request);                       
                return $request_result;
        }

Уже на сто раз проверил порядок расстановки парметров. Все по алфавиту.
Может я что-то упускаю?

п.с. Тестирую с $_GET[] запросами, чтобы видеть результат в браузере без участия флешки.

Astraport 16.04.2011 23:29

Вот так у меня списание голосов происходит. Метод другой, но разницы нет:

PHP код:

$rand rand();
    
$timestamp time()+300;
    
$sig md5("api_id=".$api_id."method=secure.withdrawVotes""random=".$rand"timestamp=".$timestamp"uid=".$user_id"v=2.0""votes=".$votes."".$api_key);
    
$postvars="api_id=".$api_id."&method=secure.withdrawVotes"."&random=".$rand."&timestamp=".$timestamp."&uid=".$user_id."&v=2.0"."&votes=".$votes.""."&sig=".$sig

sig в конце - обрати внимание. И работает.

goodguy 16.04.2011 23:35

Цитата:

sig в конце - обрати внимание. И работает.
А какая разница где она располагается в самом запросе? Речь то идет о составлении подписи. Там все должно быть по алфавиту

Цитата:

Метод другой, но разницы нет:
Очевидно есть, потому что у меня код не работает. И меня интересует именно почему он не работает.
А примеров я уже видел кучу

Astraport 16.04.2011 23:41

Цитата:

А какая разница где она располагается в самом запросе?
Верно.

Добавлено через 1 минуту
Я уже давно все это делал, но раньше у меня getBalance работал.
Ты мой код проверял?

goodguy 16.04.2011 23:54

Только подпись. Не работает.

mikhailk 17.04.2011 12:12

Проверьте настройку времени на своем сервере.

goodguy 17.04.2011 12:15

Со временем все ок. Странно, что никто не заметил другого. В подпись запроса нужно вводить те же данные, что и в сам запрос (ну кроме самой подписи естественно). Т.е. если я указал format=JSON в запросе, то и в подпись надо это внести.
Два дня потратил, а собака-то была не глубоко зарыта.

Вот этот код нормально работает
Код:

$stringForSig = "api_id=" . API_ID
                                                . "format=JSON"
                                                . "method=secure.getBalance"
                                                . "random=" . $random
                                                . "timestamp=" . $timestamp
                                                . "uid=" . $viewerId
                                                . "v=2.0"
                                                . API_SECRET;
               
                $sig = md5($stringForSig);
               
                $request =        $apiUrl
                                        . "?api_id=" . API_ID
                                        . "&format=JSON"
                                        . "&method=secure.getBalance"
                                        . "&random=" . $random
                                        . "&timestamp=" . $timestamp
                                        . "&uid=5495786"
                                        . "&v=2.0"
                                        . "&sig=".$sig;


etc 17.04.2011 12:23

format отсутствует в списке параметров для создания подписи.

А, пока смотрел другие темы, ответ уже дан.

Astraport 17.04.2011 12:46

Цитата:

Странно, что никто не заметил другого.
Ну так тебе приводили рабочий код где нет format, а ты и не заметил;)

goodguy 17.04.2011 12:47

Не надо присваиваить себе лавры ) Надо было сказать, что у меня нет формата в подписи тогда уж ;)


Часовой пояс GMT +4, время: 02:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.