Adobe Flash CS5, ActionScript 3.0, PHP
Для работы приложения требуется хостинг с поддержкой curl. Скорее всего бесплатный хостинг не подойдёт.
Main.as
Код: Выделить всё
/* https://flapps.ru/forum/ - форум о создании приложений */package { import flash.net.*; import flash.display.*; import flash.events.*; import flash.text.*; import flash.ui.*; import vk.*; public class Main extends Sprite { private var api_id:Number=1727522;// id вашего приложения private var api_secret:String="mgqE3mX4rb";// секретный ключ private var viewer_id; private var externalXML:XML; private var loader:URLLoader=new URLLoader ; private var photoLoader:Loader=new Loader ; private var api:VkApiNode; private var url_loader:URLLoader; private var url_request:URLRequest; private var query:String; private var uids:Array; private var fields:Array; public function Main():void { uid_to_tf.borderColor = 0xC0CAD5; rate_tf.borderColor = 0xC0CAD5; message_tf.borderColor = 0xC0CAD5; var len = message_tf.text.length; if(message_tf.text.charAt(len - 1) == '\r') message_tf.replaceText(len - 1, len, ''); var cm = new ContextMenu(); cm.hideBuiltInItems(); var p1:ContextMenuItem=new ContextMenuItem('Повышение рейтинга'); var p2:ContextMenuItem=new ContextMenuItem('© id'); cm.customItems.push(p1,p2); this.contextMenu=cm; VK.init(this, "http://api.vkontakte.ru/swf/vk_gui-0.3.swf"); } public function onVKLoaded():void { var btn1:* =VK.createSquareButton("Повысить",255,45); addChild(btn1); var btn2:* =VK.createSquareButton("Проверить",75,45); addChild(btn2); var params:Object=LoaderInfo(root.loaderInfo).parameters; viewer_id=params['viewer_id']; uid_to_tf.restrict = "0-9"; rate_tf.restrict = "0-9"; uid_to_tf.text = viewer_id; fields=['first_name,last_name,photo_big']; uids=[uid_to_tf.text]; getProfiles(uids,fields); btn1.addEventListener(MouseEvent.CLICK,btn1Click); btn2.addEventListener(MouseEvent.CLICK,btn2Click); rate_tf.addEventListener(Event.CHANGE, onChange); } public function onChange(e:Event):void { if (int(rate_tf.text)>0) { if (int(rate_tf.text)<100) { votes_tf.text = ''+(int(rate_tf.text) * 6*100)/1000; } else { votes_tf.text = ''+(int(rate_tf.text) * 5*100)/1000; } } else { votes_tf.text = 'Ошибка'; } } public function btn1Click(e:MouseEvent):void { result_flapps_tf.text='Ждите...'; var params:Object=LoaderInfo(root.loaderInfo).parameters; var loader:URLLoader=new URLLoader ; var request:URLRequest=new URLRequest("https://flapps.ru/addrating.php");// адрес вашего скрипта request.method=URLRequestMethod.POST; var vars:URLVariables=new URLVariables ; vars['auth_key']=params['auth_key']; vars['viewer_id']=params['viewer_id']; vars['uid']=uid_to_tf.text; vars['rate']=rate_tf.text; vars['message']=message_tf.text; request.data=vars; loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,onError); loader.addEventListener(Event.COMPLETE,onComplete); loader.load(request); } private function onComplete(event:Event):void { var loader:URLLoader=event.target as URLLoader; if (loader!=null) { result_flapps_tf.text=loader.data; } else { result_flapps_tf.text='Ошибка!'; } } private function onError(event:Event):void { result_flapps_tf.text='Ошибка! Попробуйте позже.'; } public function btn2Click(e:MouseEvent):void { fields=['first_name,last_name,photo_big']; uids=[uid_to_tf.text]; getProfiles(uids,fields); } public function getProfiles(uid:Array,fields:Array):void { if (fields.length==0) { fields=null; } api=new VkApiNode(viewer_id,api_id,api_secret); query=api.getProfiles(uid,fields); url_request=new URLRequest(query); url_loader=new URLLoader ; url_loader.addEventListener(Event.COMPLETE,onProfileLoad); url_loader.load(url_request); } private function onProfileLoad(e:Event):void { if (url_loader!=null) { externalXML=new XML(url_loader.data); user_name_tf.text=externalXML..first_name+' '+externalXML..last_name; var photo=externalXML..photo_big; url_request=new URLRequest(photo); photoLoader.load(url_request); photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onPhotoLoaded); } else { trace("Error!"); } } private function onPhotoLoaded(e:Event):void { photoLoader.x=340; photoLoader.y=37; addChild(photoLoader); } }}
addrating.php
Код: Выделить всё
<?/* https://flapps.ru/forum/ - форум о создании приложений */ require('VkApi.class.php'); $app_id = '1727522'; // id приложения$api_secret = 'qwertyuiopasdfghjklzxcvbnm'; // Защищенный ключ с вкладки "Платежи" function get_url($query) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $query); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10); return curl_exec($ch); curl_close($ch);} $auth_key = $_POST['auth_key']; // auth_key из FlashVars приложения$viewer_id = $_POST['viewer_id']; // id просматривающего приложение // Рассчитывается ключ авторизации$real_key = md5($app_id."_".$viewer_id."_".$api_secret); if ($auth_key == $real_key){$uid = $_POST['uid'];$rate = $_POST['rate'];// снимаем со счета пользователя голосаif ($rate<100) { $votes = $rate*60; }else { $votes = $rate*50; } $api = new VkApiNode($app_id, $api_secret);$query = $api->withdrawVotes($viewer_id, $votes); $result = new SimpleXMLElement(get_url($query));if ($result->transferred>0) {// повышаем рейтинг$message = $_POST['message'];$query = $api->addRating($uid, $rate, $message); $result = new SimpleXMLElement(get_url($query)); if ($result->rating_added>0) echo 'Рейтинг повышен!';else { switch($result->error_code) { case 2: echo "Приложение выключено!"; break; case 113: echo "Неверный id пользователя"; break; case 147: echo "На балансе приложения недостаточно голосов!"; break; default: echo "Произошла ошибка!"; } }}else { switch($result->error_code) { case 2: echo "Приложение выключено!"; break; case 113: echo "Неверный id пользователя"; break; case 151: echo "Неверное количество голосов!"; break; case 502: echo "На балансе недостаточно голосов!"; break; default: echo "Произошла ошибка!"; } }// flapps.ru}else echo 'error';?>
Исходник https://flapps.ru/example/addrating.rar
Установка приложения
Серверная часть
1. В addrating.php изменить id приложения и защищенный ключ.
2. Загрузить файлы из папки server в любой каталог на сервере. Файл crossdomain.xml загрузить в корневой каталог.
Приложение
1. В Main.as изменить api_id, api_secret и https://flapps.ru/addrating.php на свои данные.
2. При необходимости, изменить название приложения "Повышение рейтинга" и id на свои данные.
3. Создать swf файл и загрузить его в контакт.
4. Включить приложение, если оно ещё не включено. Редактирование -> Состояние: Приложение включено и видно всем.
5. Всё готово!