Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [...] POST запрос без использования URLVariables (http://www.flasher.ru/forum/showthread.php?t=152722)

Bgg 22.03.2011 13:09

POST запрос без использования URLVariables
 
Необходимо создать запрос с подписью по следующим требованиям:
Цитата:

1. Берём параметры в порядке их передачи серверу. (в вашем запросе)
2. Из каждой пары ключ => значение, получаем такой код:
http://fotostrana.ru/api/doc/work

Код AS3:

var request:URLRequest = new URLRequest();
var loader:URLLoader = new URLLoader();
request.url = getURL(request_params);
request.method = URLRequestMethod.POST;
 
//...
private function getURL(params:Object):String {
        var keyParams:String = "";
        var reqParams:String = "";
        var sig:String = "";
        for (var key:* in params) {
                keyParams += key + "=" + params[key];
                reqParams += key + "=" + params[key] + "&";
        }
 
        sig = MD5.hash(_viewer_id + keyParams + _api_secret);
        return api_server_url + "?" + reqParams + "sig=" + sig;
}

Метод getURL возвращает url адрес, который работает в браузере, но в FD API фотостраны возвращает ошибку о неверной подписи.

etc 22.03.2011 14:25

Вероятно всё же надо сортировать по алфавиту.

Bgg 22.03.2011 14:27

Т.е. при запросе из браузера сортировка параметров по алфавиту может игнорироваться?

etc 22.03.2011 14:32

Нет, скорее всего она нужна, но об этом забыли сообщить.

Bgg 22.03.2011 15:55

Да нет, сортировка не помогла.

Добавлено через 3 часа 52 минуты
Код AS3:

private function getURL(params:Object):String {
        var keyParams:String = "";
        var reqParams:String = "";
        var arrParams:Array = new Array();
        var sig:String = "";
        for (var key:* in params) {
                arrParams.push(key + "=" + params[key]);
        }
 
        arrParams.sort();
 
        for (var i:int = 0; i < arrParams.length; i++) {
                var item:String = arrParams[i];
                keyParams += item;
                reqParams += item + "&";
        }
 
        sig = MD5.hash(keyParams + _api_secret);
        return api_server_url + "?" + reqParams + "sig=" + sig;
}

Руководство на сайте врет: MD5 нужно брать от "values"."secretKey", вместо "id пользователя, который находится на странице"."values"."secretKey"(с)


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

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