Получение данных при помощи удаленного сервера

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Получение данных при помощи удаленного сервера

Сообщение Nick Lisogor »

Здравствуйте. Недавно мне нужно было подключиться к серверу vkontakte и узнать нужные мне данные о пользователях, сделал это при помощи сервера, обращающегося к PHP скрипту POST запросом(также тестировал GET запросом напрямую):

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

<?    require 'vkapi.class.php';     (String)$app_id = some_id;    (String)$api_secret_key = 'some_key';     $connection = new vkapi($app_id, $api_secret_key);        $users_data = $connection->api('getProfiles', array('uids'=>(String)$_POST['users']));    //$users_data = $connection->api('getProfiles', array('uids'=>(String)$_GET['users']));        $response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";    $response .= "<response>";        for((int)$i = 0; $i < count($users_data); $i ++)    {        $response .= "<user";        $response .= " uid=\"".$users_data['response'][$i]['uid']."\"";        $response .= " first_name=\"".$users_data['response'][$i]['first_name']."\"";        $response .= " last_name=\"".$users_data['response'][$i]['last_name']."\"";        $response .= "/>";    }        $response .= "</response>";        echo $response;?>
Поясняю: код должен получать строку с id пользователей (через запятую): 'id1,id2,id3,...,idn' и возвращать id,имя и фамилию каждого пользователя в списке в XML. Но, к сожалению, пока что только возвращает четвертую ошибку. Код, вроде, верный, да и cURL поддерживается. Вроде, все. Буду рад любой помощи)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Получение данных при помощи удаленного сервера

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

Nick Lisogor
Код рабочий.
Проверь что id и защищенный ключ указаны верно.
users точно передается POST запросом, а не GET ?
Сделай

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

echo $_POST['users'];
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Re: Получение данных при помощи удаленного сервера

Сообщение Nick Lisogor »

Александр, все данные указаны верно, users точно передаются POST запросом(GET мне нужен был для отладки), vkapi.class.php стандартный, сам класс я не редактировал(под XML он будет переделан позже), $_POST['users'] я пробовал заменить напрямую на 'id1,id2,...,idn', но это также не помогло.
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Re: Получение данных при помощи удаленного сервера

Сообщение Nick Lisogor »

Update:

Решил начать с нуля, стараясь изменить как можно меньше кода:

- создал тестовое приложение;
- скачал архив с примером: 'http://vkontakte.ru/source/APIServerPHPClass.zip';
- заменил id приложения и секрет в примере(index.php);
- выполнил скрипт.

В результате, сервер vkontakte вернул ошибку 4(Incorrect signature: server authorization):

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

Array ( [error] => Array ( [error_code] => 4 [error_msg] => Incorrect signature: server authorization [request_params] => Array ( [0] => Array ( [key] => api_id [value] => 2227172 ) [1] => Array ( [key] => format [value] => json ) [2] => Array ( [key] => method [value] => getProfiles ) [3] => Array ( [key] => random [value] => 8598 ) [4] => Array ( [key] => timestamp [value] => 1299839774 ) [5] => Array ( [key] => uids [value] => 1,6492 ) [6] => Array ( [key] => v [value] => 3.0 ) [7] => Array ( [key] => sig [value] => 6ae6c6adaff334d3bf8523b920089094 ) ) ) )
Возможно, эта ошибка вызвана из-за того, что приложение не прошло модерацию так, как оно новое, также я 'Включил приложение' и сделал его видимым всем.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Получение данных при помощи удаленного сервера

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

Nick Lisogor
Я проверял твой код на непроверенном приложении, которое было создано давно.
Попробуй код отсюда Вызов серверных методов (APIServerPHPClass), заменив только id приложения и защищенный ключ.
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Re: Получение данных при помощи удаленного сервера

Сообщение Nick Lisogor »

Александр, вернуло ту же ошибку. Возможно, запрос к серверу vkontakte сформирован не правильно, хотя, вряд ли, так, как vkapi.class.php всё таки из официального источника, та и по документации я проверял.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Получение данных при помощи удаленного сервера

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

Точно используешь защищенный ключ, а не секретный?
Какой хостинг? Создай php файл с содержимым:

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

<?echo time();?>
И открой на своем сервере. Одновременно с этим открой http://flapps.ru/time.php
Сравни значения. Сильно отличаются?
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Re: Получение данных при помощи удаленного сервера

Сообщение Nick Lisogor »

Огромное спасибо, Александр. Нелепая ситуация вышла, действительно, дело было именно во времени.
annechko
Сообщения: 7
Зарегистрирован: 28 июн 2015, 21:38

Re: Получение данных при помощи удаленного сервера

Сообщение annechko »

Nick Lisogor
скажите, пожалуйста, а как вы исправили ошибку со временем? у меня похожая ситуация, не знаю, что делать :(
Ответить