Страница 1 из 1

Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 25 май 2011, 15:03
fedos
Всем доброго времени суток! В AS:

Код: Выделить всё

 setwin.golosa_vk.addEventListener(MouseEvent.CLICK, fl_ClickToShowPaymentBox);          function fl_ClickToShowPaymentBox(event:MouseEvent):void    {VK.callMethod("showPaymentBox");VK.addEventListener('onBalanceChanged', onBalanceChanged);apiConnection.addEventListener('onBalanceChanged', onBalanceChanged);}var MyLoader:URLLoader=new URLLoader;  function onBalanceChanged(e: CustomEvent): void { var balance = e.params[0]; var request:URLRequest=new URLRequest("хост поддерживает пхп/golosa.php");request.method=URLRequestMethod.POST;var vars:URLVariables=new URLVariables  ;var params:Object=LoaderInfo(root.loaderInfo).parameters;vars['viewer_id']=params['viewer_id'];vars['auth_key']=params['auth_key'];request.data=vars;MyLoader.load(request);}
В php файле:

Код: Выделить всё

<?php// http://flapps.ru/forum/ - форум о создании приложений В Контактеrequire('VkApi.class.php');$UserID = $_POST['UserID']; $auth_key = $_POST['auth_key'];$app_id = 'тут вписан ид прилы';$api_secret = 'тут вписан защищенный ключ:';$real_key = md5($app_id."_".$UserID."_".$api_secret);if ($auth_key == $real_key){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);}$api = new VkApiNode($app_id, $api_secret);$query = $api->getBalance($UserID);$user_balance = new SimpleXMLElement(get_url($query));if ($user_balance->balance >=100) {get_url($query = $api->withdrawVotes($UserID, 100));}}?>  
Рядом лежит VkApi.class.php, но все равно не работает. Этот скрипт уже не актуален или в чем ошибка? В этом деле, я плохо разбираюсь, но стараюсь учиться. Заранее благодарен.

Re: Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 25 май 2011, 22:27
Александр
fedos
Используй API 3.0 и официальный класс для работы. Старая версия работает, но если ты учишься, то лучше учись сразу новому, оно не сложнее.
В AS код будет такой же, в php немного другой.
Примеры php кода для API 3.0 http://flapps.ru/forum/topic2308.html и http://flapps.ru/forum/topic2683.html

Re: Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 25 май 2011, 23:27
fedos
Поменял php скрипт на http://flapps.ru/forum/topic2683.html, но все равно не списывает голоса. Почему же? 0о

Re: Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 26 май 2011, 20:48
Александр
fedos
После

Код: Выделить всё

$resp = $VK->api('secure.withdrawVotes', array('uid'=>$viewer_id, 'votes'=>$votes));
Сделай

Код: Выделить всё

print_r($resp);
Попробуй выяснить в каком месте возникает ошибка: делай вывод переменных, смотри что не так.
Используй Charles.

Re: Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 10 фев 2012, 18:27
Doszhan
Кажется, остался последний рубеж на пути к созданию моего первого приложения во вконтактах.

Прочитал документацию, остались вопросы. sig, говорится, надо передавать обязательно, если приложение запускается не на серверной стороне. Мое приложение находится на хостинге, приложение открывается через iFrame. Поэтому мне не приходилось передавать это значение в обращениях к API.

Но возникли сложности со списыванием со счета. Делал как всегда:

Код: Выделить всё

function getBalance(x){    console.log(x);    var foo = new Date();    var unixtime_ms = foo.getTime();    var unixtime = parseInt(unixtime_ms / 1000);    alert(unixtime);    VK.api("secure.withdrawVotes", {timestamp: unixtime, random: Math.floor(Math.random()*101), uid: viewer_id, votes: x}, function(data) {        if (data.response) {                    } else {            document.getElementById('warning').innerHTML = 'Ошибка! ' + data.error.error_code + ' ' + data.error.error_msg;        }       });}
И мне выводится ошибка "1 Unknown error occured". Отправил все необходимые параметры, которые требует функция по документации. Подскажите в чем ошибка.

PS: инициализация происходит банальнейшим образом

Код: Выделить всё

VK.init(function () {  });

Re: Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 10 фев 2012, 20:43
Александр
Doszhan
secure.withdrawVotes - это серверный метод. http://flapps.ru/forum/topic2308.html

Re: Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 11 фев 2012, 18:22
Doszhan
Александр
Спасибо за наводку. Немного помучившись смог добиться работоспособности функции. Функция отвечает правильно:

Код: Выделить всё

Array(    [response] => 100)
Следовало бы ожидать, что функция отработала правильно, но, к сожалению, никакого окна для списания голосов (если таковой имеется) не выводится, со счета приложения юзера голоса не списываются.

Являюсь администратором приложения (но не главным, т.е. я не создатель), test_mode не указывал. В чем проблема?

Re: Скрипт для списывания голосов secure.withdrawvotes

Добавлено: 12 фев 2012, 15:28
Александр
Doszhan писал(а):никакого окна для списания голосов
Это showPaymentBox http://vk.com/developers.php?oid=-1&p=Javascript_API
Doszhan писал(а):Являюсь администратором приложения (но не главным, т.е. я не создатель), test_mode не указывал. В чем проблема?
Методы работы с голосами в неодобренном приложении работают только у главного админа.
test_mode в серверных методах не использовался. В версии API 3.0 никакого test_mode вообще нет.