Форум 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=156089)

goodguy 17.05.2011 15:18

Chuvak, я тоже с этим сталкивался. И тоже запинался на этом. Только с одной разницей, мне нужно было подписать безопасный запрос. Но суть та же. secret - это именно то, что написано в поле Защищенный ключ.
Фишка в том, что в подпись должно входить больше параметров, чем указано в документации. Туда нужно вносить все, что есть в запросе в алфавитном порядке.
Как выглядит запрос, для которого формируется подпись?
Цитата:

Не знаете - молчите. Советчики блин.
И не надо тут хамить. Не нравится - желаю успехов в долбежке головой об стену )

Цитата:

Откомпилируйте мой запрос подставьте значение любого secret который только найдёте хоть на луне и всё-равно работать не будет
Ну еще бы. Его ведь не на луне нужно искать )

Борис Бритва 17.05.2011 15:24

Цитата:

Сообщение от goodguy (Сообщение 996726)
Chuvak, я тоже с этим сталкивался. И тоже запинался на этом. Только с одной разницей, мне нужно было подписать безопасный запрос. Но суть та же. secret - это именно то, что написано в поле Защищенный ключ.

это не так secret и api_secret -- разные ключи. api_secret -- защищенный и он используется на _сервере_ для формирования api_key и сравнения с тем api_key который отдается во flashvars

ключ secret о котором идет речь использовался раньше для подписания всех запросов из _клиента_, теперь в настройках приложения его нет, а в доках написано что этот ключ отдается вместе с номером сессии sid во флэшварс.

проблема в том, что secret из флэшварс -- это другой secret и для подписи по старому способу v2.0 -- он не подходит.

Но api_secret -- это совсем другой ключ и он действительно тут не при чем

goodguy 17.05.2011 15:30

Речь об этом? http://vkontakte.ru/developers.php?o...FF%20%F1%20API
Если да, то secret - Это именно Защищенный ключ. Не знаю как было раньше, но сейчас это так.
И у меня запросы подписываются именно таким способом и именно с использованием защищенного ключа в качестве параметра secret

Борис Бритва 17.05.2011 15:36

Да. но это доки по версии 3.0 в версии 2.0 нет sid и ключ берется из настроек.

В общем как обычно ебучий вконтакт -- правок со 2 на 3 версии не много, но пока поймешь? что делать и как все поменялось и чему из документации верить, а чем -- нет, -- полдня убьешь.

Рецепт прост на самом деле -- версию прописываемся явно как параметр v=3.0, хотя в доках и написано, что он необязательный, но без него не работает.
параметры secret и sid берем из flashvars, sid в формировании sig _НЕ_ участвует.

для локального тестирования, достаточно прописать внутрь приложения любую пару secret и sid полученные из флэшварс -- можно посмотреть прямо в коде страницы.

Chuvak 17.05.2011 15:47

брал из поля Защищённый ключ: либо из flahVars secret

Добавлено через 5 минут
из вышеизложенного уяснил, что стоит добавить sid из flashVars в запрос и сменить версию на 3.0 и всё закрутится-завертится, но увы, это не так.

Борис Бритва 17.05.2011 16:11

Цитата:

Сообщение от Chuvak (Сообщение 996735)
брал из поля Защищённый ключ: либо из flahVars secret

Добавлено через 5 минут
из вышеизложенного уяснил, что стоит добавить sid из flashVars в запрос и сменить версию на 3.0 и всё закрутится-завертится, но увы, это не так.

у меня получилось только что.

скопируй целиком код свой

Chuvak 18.05.2011 22:18

вот рабочий кодец
Код AS3:

package 
{
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.net.URLRequestMethod;
        import flash.display.*;
        import flash.events.*;
        import flash.text.*;
 
 
        public class Main extends Sprite
        {
                var request = new URLRequest();
                var loader = new URLLoader();
                var viewer_id;
                var code:String;
                var sid:String;
                var zalupa:String;
                public function Main():void
                {
                        var params:Object = LoaderInfo(root.loaderInfo).parameters;
                        viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
                        code = params['secret'];
                        sid = params['sid'];
 
 
 
 
                        request.url = "http://api.vkontakte.ru/api.php";
                        request.method = URLRequestMethod.POST;
                        zalupa = viewer_id + "api_id=2328580fields=first_name,last_nameformat=xmlmethod=getProfilesuids=11789177v=3.0" + code;
                        request.data = "api_id=2328580&fields=first_name,last_name&format=xml&method=getProfiles&uids=11789177&v=3.0&sid=" + sid + "&sig=" + MD5.encrypt(zalupa);
                        loader.addEventListener(Event.COMPLETE, onComplete);
                        loader.load(request);
 
                }
                public function onComplete(e:Event):void
                {
                        trace(loader.data);
                        xmlina.text = loader.data;
                        code_ta.text = sid;
                        code_ta1.text = code;
                        code_ta2.text = viewer_id + "api_id=2328580fields=first_name,last_nameformat=xmlmethod=getProfilesuids=11789177v=3.0" + code;
 
                }
        }
}

Добавлено через 2 часа 4 минуты
он не просто мой рабочий а он наконец заработал у меня


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

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