![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2009
Сообщений: 37
|
вот основной класс тестового приложения
package { // путь до библиотеки мд5, для просчета сигнатуры запроса к АПИ import com.adobe.crypto.MD5; import flash.display.*; import flash.events.*; import flash.net.*; /** * Class TestAPI Тестовый запрос к АПИ ВКонтакте и вывод списка друзей пользователя * @author Yuriy (Mur4ik) Kulkoff * @version 0.1 * @date 26.07.2009 */ public class testAPI extends Sprite { //ID приложения var apiID:String = "735931"; //Секретный ключ приложения var secret:String = "SZvqkJwYoE"; //режим тестирования(0-выключен,1-включен) var testMode:String = "1"; // Юзер, список друзей которого нужно вывести // В данном случае берем юзера просматривающего рпиложение var viewerID:String = root.loaderInfo.parameters.viewer_id; private var friendsList:XML; public function testAPI() { if (stage) getFriends(null); else addEventListener(Event.ADDED_TO_STAGE, getFriends); } public function getFriends(event:Event):void { var r:URLRequest = new URLRequest("http://api.vkontakte.ru/api.php"); var l:URLLoader = new URLLoader(); var v:URLVariables = new URLVariables(); // Необходимый метод изи АПИ //var methodFromAPI:String = "getFriends"; var methodFromAPI:String = "audio.get"; // Для тестов не локально должно быть 0 v.api_id = apiID; v.aids = "66160268"; v.v = "2.0"; // Версия АПИ v.method = methodFromAPI; v.aids = "62484093"; v.test_mode = testMode; v.sig = MD5.hash(viewerID + 'api_id=' + apiID + 'method=' + methodFromAPI + 'test_mode=' + testMode + 'v=2.0' + secret); r.data = v; r.method = URLRequestMethod.GET; l.load(r); l.addEventListener(Event.COMPLETE, loader_completeHandler); } private function loader_completeHandler(event:Event):void { friendsList = new XML(event.target.data); // Выводим ID друзей friendsList.*.( trace(name() + ": " + toString()) ); } } } |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
В подписи не все параметры. aids нужно добавить.
У меня чего-то testMode, вообще, отказывается работать в последние два дня. Не могу понять в чем проблема. Любой запрос возвращает ошибку 4 (неправильная сигнатура) и этот пример тоже, если заливаешь на хост, ничего при этом не меняя, то все начинает работать как положено. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 37
|
Цитата:
|
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
|
|
|||||
|
Регистрация: Sep 2009
Сообщений: 37
|
понял,спасибо. надо было мне документацию внимательней читать)))
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 2
|
так. не помню где это на форуме было, но хочу вернуться к прежней задаче: вывод в trace список друзей вконтакте. во первых у меня флешь CS4 ругается на эту строчку: 1172: Definition com.adobe.crypto:MD5 could not be found. (import com.adobe.crypto.MD5
а потом на это: 1061: Call to a possibly undefined method hash through a reference with static type Class. вот исходный код: package { // путь до библиотеки мд5, для просчета сигнатуры запроса к АПИ import com.adobe.crypto.MD5; import flash.display.*; import flash.events.*; import flash.net.*; /** * Class TestAPI Тестовый запрос к АПИ ВКонтакте и вывод списка друзей пользователя * @author Yuriy (Mur4ik) Kulkoff * @version 0.1 * @date 26.07.2009 */ public class TestAPI extends Sprite { private var friendsList:XML; public function TestAPI() { if (stage) getFriends(null); else addEventListener(Event.ADDED_TO_STAGE, getFriends); } public function getFriends(event:Event):void { var r:URLRequest = new URLRequest("http://api.vkontakte.ru/api.php"); var l:URLLoader = new URLLoader(); var v:URLVariables = new URLVariables(); // Юзер, список друзей которого нужно вывести // В данном случае берем юзера просматривающего рпиложение var viewerID:String = root.loaderInfo.parameters.viewer_id; //ID приложения var apiID:String = "1776421"; //Секретный ключ приложения var secret:String = "4NvIhgWvkm"; // Необходимый метод изи АПИ var methodFromAPI:String = "getFriends"; // Для тестов не локально должно быть 0 var testMode:String = "1"; v.api_id = apiID; v.v = "2.0"; // Версия АПИ v.method = methodFromAPI; v.test_mode = testMode; v.sig = MD5.hash(viewerID + 'api_id=' + apiID + 'method=' + methodFromAPI + 'test_mode=' + testMode + 'v=2.0' + secret); r.data = v; r.method = URLRequestMethod.POST; l.load(r); l.addEventListener(Event.COMPLETE, loader_completeHandler); } private function loader_completeHandler(event:Event):void { friendsList = new XML(event.target.data); // Выводим ID друзей friendsList.*.( trace(name() + ": " + toString()) ); // Далее по этим ID можно узнать более подробную информацию // с помошью метода getProfiles из АПИ } } } убрал строчку import com.adobe.crypto.MD5; и исправил другую на v.sig = MD5.encrypt(viewerID + 'api_id=' + apiID + 'method=' + methodFromAPI + 'test_mode=' + testMode + 'v=2.0' + secret); , благо у меня есть файл MD5.as но мне почему то все равно флеш выдает ошибку error_code: 4 error_msg: Incorrect signature. кто нибудь может выложить исходник или хотя бы подсказать, почему неправильно? Добавлено через 46 минут ага. хоть как то разобрался с ошибкой import com.adobe.crypto.MD5; теперь все вроде правильно, но пишет 1061: Call to a possibly undefined method hash through a reference with static type Class. никто не подскажет в чем я не прав?)) |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Где это файл (MD5.as) у вас лежит? И что это, вообще, за класс? com.adobe.crypto.MD5?
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
1. Посмотрите package класса MD5.
2. Если он пустой (просто "package" и сразу фигурная скобка { ) - навряд ли это адобовский класс - проверьте, есть ли у него public static function hash(). Я, к примеру, долгое время пользовался другим классом MD5 и у него были совсем другие названия методов. 3. Если же package - адобовский com.adobe.crypto, то Вам надо в директории проекта создать соответствующую директорию com/adobe/crypto, в которую уже положить файл MD5.as, и снова написать импорт в начале пакета, как в приведенном здесь примере кода.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 2
|
ответ udaaff'u: файло MD5 можно скачать отсюда: http://fsca.ru/flash/vkontakte/vksender/vksender.rar. в архиве возьми папку "com". оттуда и будет класс import com.adobe.crypto.MD5;
вопрос ко всем: предисловие: ну хорошо. все разобрался. теперь он почему то только моих друзей показывает вконтакте. сам вопрос: как сделать так, чтобы он и у других юзеров показывал друзей? когда я пишу var viewerID:Numer = (ид другого человека, который разрешил все действия приложению), то опять выдает ошибку неправильной сигнатуры |
|
|||||
|
никак. запукать должно от имени того юзера, в кукисы должны быть того юзера и тд.
Узнать можно только друзей человека, от имени которого запущено приложение, если тот в настройках разрешил. Если все таки очень нужно -- через свой сервер в своей бд пересохранять эти списки. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|