getUserBalance чет не работает

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Pomaska
Сообщения: 8
Зарегистрирован: 07 ноя 2010, 10:19

getUserBalance чет не работает

Сообщение Pomaska »

Всем привет!
Вчера начал читать документацию по iframe приложениям вконтакте и стал делать вывод имени, фамилии и айди...
Всё работло отлично.. Потом попробовал сделать выввод числа голосов (сколько у юзера голосов в приложении), вывод почему то не работает... обыскал много форумов, но так ничего не нашел...
подскажите что не так?

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

<?php // Для начала, определим все постоянные значения:define('API_ID', "2008738"); // ID вашего приложенияdefine('API_VERSION', "3.0"); // Версия API (на данный момент она равняется 3.0)define('API_SECRET', "******************I"); // Тот самый защищённый ключ // Генерируем подлинный auth_key (для наглядности, назовём его secret_key)$secret_key = md5(API_ID . "_" . $_GET['viewer_id'] . "_" . API_SECRET); // вместо постоянной API_ID, можно воспользоваться полученной от сервера $_GET['api_id']. Разницы между этими значениями нет (если, конечно, запрос не фальшивый :)) // Если нет сессии (т.е. пользователь НЕ авторизирован), сравниваем наш подлинный secret_key с полученным auth_key, и при успехе ставим сессию user_id, содержащую id текущего пользователя.if (!$_SESSION['user_id']){    if ($_GET['auth_key'] == $secret_key)    {        $_SESSION['user_id'] = $_GET['viewer_id'];    }    else    {        exit("Something wrong...");    }} $method = "getProfiles";$sig = md5("api_id=" . API_ID . "method=" . $method . "uids=" . $_SESSION['user_id'] . "v=" . API_VERSION . API_SECRET);$user = simplexml_load_file("http://api.vkontakte.ru/api.php?api_id=" . API_ID . "&v=" . API_VERSION . "&method=" . $method . "&uids=" . $_SESSION['user_id'] . "&sig=" . $sig);$name = $user->user->first_name . " " . $user->user->last_name."<br>".   $user->user->uid; echo $name;       $methodd = "getUserBalance";$sigd = md5("api_id=" . API_ID . "method=" . $methodd .  "v=" . API_VERSION . API_SECRET);$userd = simplexml_load_file("http://api.vkontakte.ru/api.php?api_id=" . API_ID . "&v=" . API_VERSION . "&method=" . $methodd . "&sig=" . $sigd);$named = $userd->balance; echo "<br><BR>sadasdas: ".$named;?>     
Аватара пользователя
jagger
Сообщения: 114
Зарегистрирован: 28 июл 2010, 13:26

Re: getUserBalance чет не работает

Сообщение jagger »

Javascript

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

VK.api('getUserBalance',{}, function(data){alert('Ваш баланс в приложении: ' + data.response*0.01 + ' голос(ов)');});
Pomaska
Сообщения: 8
Зарегистрирован: 07 ноя 2010, 10:19

Re: getUserBalance чет не работает

Сообщение Pomaska »

а можно ли както сделать, чтобы было без скрипта контакта...?
а просто методом php+mysql и api-vkontakte?
Pomaska
Сообщения: 8
Зарегистрирован: 07 ноя 2010, 10:19

Re: getUserBalance чет не работает

Сообщение Pomaska »

есть какая нибудь статья по подключениям к методам с помощью php?
Pomaska
Сообщения: 8
Зарегистрирован: 07 ноя 2010, 10:19

Re: getUserBalance чет не работает

Сообщение Pomaska »

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

$unixtime=strtotime('now'); $random=rand(0,100000000);$meth = "secure.getBalance";$sig= md5("api_id=".API_ID."method=".$meth."uid=".$_SESSION['user_id']."random=".$random."timestamp=".$unixtime."v=".API_VERSION.API_SECRET);  $zaproz="http://api.vkontakte.ru/api.php?api_id=".API_ID."&method=".$meth."&uid=".$_SESSION['user_id']."&random=".$random."&timestamp=".$unixtime."&v=".API_VERSION."&sig=".$sig;  $ppp=file_get_contents($zaproz) ; $pppp= $ppp->balance; echo "<br><BR>sadasdas: ".$ppp;
сделал сейчас вот так.... пишите что сигнатура не правельно введена.... в чем тут трабла...?=(
Аватара пользователя
alexei
Разработчик
Разработчик
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44

Re: getUserBalance чет не работает

Сообщение alexei »

random=".$random.
Как минимум из-за этого в запросе и в подписи разные рандомные числа.
Pomaska
Сообщения: 8
Зарегистрирован: 07 ноя 2010, 10:19

Re: getUserBalance чет не работает

Сообщение Pomaska »

мммм я сейчас пробую без рандома.... и всё равно ничего.... а что именно надо писать?
file_get_contents
или
simplexml_load_file
???? оО

я когда пишу вторым варинатом ничего не выводится, а когда пишу первым (имя не выводится, а вместо баланс пишет что сигнатура не верна)

сейчас вот код:

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

<?php// Для начала, определим все постоянные значения:define('API_ID', "2008738"); // ID вашего приложенияdefine('API_VERSION', "3.0"); // Версия API (на данный момент она равняется 3.0)define('API_SECRET', "**********"); // Тот самый защищённый ключ // Генерируем подлинный auth_key (для наглядности, назовём его secret_key)$secret_key = md5(API_ID . "_" . $_GET['viewer_id'] . "_" . API_SECRET); // вместо постоянной API_ID, можно воспользоваться полученной от сервера $_GET['api_id']. Разницы между этими значениями нет (если, конечно, запрос не фальшивый :)) // Если нет сессии (т.е. пользователь НЕ авторизирован), сравниваем наш подлинный secret_key с полученным auth_key, и при успехе ставим сессию user_id, содержащую id текущего пользователя.if (!$_SESSION['user_id']){    if ($_GET['auth_key'] == $secret_key)    {        $_SESSION['user_id'] = $_GET['viewer_id'];    }    else    {        exit("Something wrong...");    }} $method = "getProfiles";$sig = md5("api_id=" . API_ID . "method=" . $method . "uids=" . $_SESSION['user_id'] . "v=" . API_VERSION . API_SECRET);$user = simplexml_load_file("http://api.vkontakte.ru/api.php?api_id=" . API_ID . "&v=" . API_VERSION . "&method=" . $method . "&uids=" . $_SESSION['user_id'] . "&sig=" . $sig);$name = $user->user->first_name . " " . $user->user->last_name."<br>".   $user->user->uid; echo $name;    $unixtime=strtotime('now');$random=rand(0,100000000);$meth = "secure.getBalance";$sigg = md5("api_id=" . API_ID . "method=" . $meth . "uid=" . $_SESSION['user_id'] . "timestamp=" . $unixtime . "v=" . API_VERSION . API_SECRET);  $zaproz="http://api.vkontakte.ru/api.php?api_id=" . API_ID . "&method=" . $meth . "&uid=" . $_SESSION['user_id'] . "&timestamp=" . $unixtime . "&v=" . API_VERSION . "&sig=" . $sigg;  $ppp= simplexml_load_file("http://api.vkontakte.ru/api.php?api_id=" . API_ID . "&method=" . $meth . "&uid=" . $_SESSION['user_id'] . "&timestamp=" . $unixtime . "&v=" . API_VERSION . "&sig=" . $sigg); $pppp= $ppp->balance; echo "<br><BR>sadasdas: ".$pppp;echo "<br>".$unixtime;echo "<br><BR>sadasdas: ".$ppp;?>     
Pomaska
Сообщения: 8
Зарегистрирован: 07 ноя 2010, 10:19

Re: getUserBalance чет не работает

Сообщение Pomaska »

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

Макс Федоров44418285 sadasdas: 1289131893 sadasdas: 4 Incorrect signature api_id 2008738 method secure.getBalance uid 44418285 timestamp 1289131893 v 3.0 sig da7de9f2910cd6a774cd290a7b12ddff
вот что пишет мне в приложении.....
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: getUserBalance чет не работает

Сообщение Александр »

Pomaska
Из темы вроде как хочешь узнать баланс пользователя, а в скриптах используешь метод getProfiles.
В контакте есть Класс для вызова серверных методов (PHP) http://vkontakte.ru/source/APIServerPHPClass.zip В нём есть файл с примером. Используй его.
С сервера можно вызывать только secure методы и getProfiles.
Ответить