Получение данных с ВК API на другом сервере wall.get и др.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
andreyukricq
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45

Получение данных с ВК API на другом сервере wall.get и др.

Сообщение andreyukricq »

Доброе время суток ))
У меня проблема такого рода: Нужно получить данные со стены пользователя и его статус.
Я опишу свои действия (если что-то я сделал не правильно, прошу подсказать)
Создал тестовое приложение на сайте VK и добавил скрипты php класса + javascript на свой сайт например site.com

php класс вот такой

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

<?class VKapi{    private $api_secret;    private $api_id;    private $api_idcookie;        function __construct()    {        $this->api_secret='HkLAPKSKg5uj4yDiYL5x';        $this->api_id='айди приложения';        $this->api_idcookie='vk_app_айди приложения';    }        public function is_auth()     {        if (!isset($_COOKIE[$this->api_idcookie]))            return false;                    $vk_cookie = $_COOKIE[$this->api_idcookie];        if (!empty($vk_cookie)) {            $cookie_data = array();                        foreach (explode('&', $vk_cookie) as $item) {                $item_data = explode('=', $item);                $cookie_data[$item_data[0]] = $item_data[1];            }                        // Проверяем sig            $string = sprintf("expire=%smid=%ssecret=%ssid=%s%s", $cookie_data['expire'], $cookie_data['mid'], $cookie_data['secret'], $cookie_data['sid'], $this->api_secret);                        if (md5($string) == $cookie_data['sig']) {                // sig не подделан - возвращаем ID пользователя ВКонтакте.                $this->api_secret_cookie = $cookie_data['secret'];                //echo $this->api_secret_cookie;                //die();                return $cookie_data['mid'];            }        }        return false;    }        public function logout()     {        // Заменяем куку от ВКонтакте на пустую        if (setcookie($this->api_idcookie, '', 0, "/", '.'.$_SERVER['HTTP_HOST']))         {            return true;        }        return false;    }         function getProfiles ($uids)    {        $request['fields'] = 'uid,first_name,last_name,nickname,domain,sex,country,photo_big,contacts,online';        $request['uids']   = $uids;        $request['method'] = 'getProfiles';        return $this->request($request);    }        function getFriends ($uids)    {        $request['fields'] = 'uid,first_name,last_name,nickname,domain,sex,country,photo_big,contacts,online';        $request['uid']   = $uids;        $request['method'] = 'friends.get';        return $this->request($request);    }        function getStatus ($uids)    {        $request['uid'] = $uids;        $request['method'] = 'status.get';        return $this->request_other_method($request);    }        function getWall ($uids)    {        $request['owner_id'] = $uids;        $request['count'] = 10;        $request['filter'] = 'all';        $request['method'] = 'wall.get';        return $this->request($request);    }     function request($request)    {        $request['random']    = rand(100000,999999);        $request['timestamp'] = time();        $request['format']    = 'JSON';        $request['api_id']    = $this->api_id;        $request['v']    = '3.0';        ksort($request);        $str="";        foreach ($request as $key=>$value) {            $str.=trim($key)."=".trim($value);        }        $request['sig'] = md5(trim($str.$this->api_secret));        $q = http_build_query($request);        $result = json_decode(file_get_contents("http://api.vkontakte.ru/api.php?".$q),TRUE);        return $result;    }} ?>
На сайте авторизуюсь через OPEN API
http://vkontakte.ru/login.php?app=айди приложения&layout=openapi&settings=16383
Передаю settings=16383 - т.е. прав с битовой маской достаточно
При авторизации сохраняются в куку:
expire=1301310750&mid=78351157&secret=b6902f944b&sid=4605ba4c90f8beada3a0b6a82cc035dc08db33c789c5fd7c0271464afc48a1&sig=6ada42f9a197fff4618f107bbd1cf704


Вызывают метод из класса getProfiles и getFriends(т.е. 'friends.get') все нормально и работает

А вот методы 'wall.get' и 'status.get' и прочие не работают пишет Unknown method passed

Почитал мол это не серверные методы и т.д.

После посмотрел тему Авторизация Desktop-приложений
и там (если я правильно понял 'wall.get' и прочее должно работать)
+
посмотрел http://flapps.ru/forum/topic2700.html
но там регулярные выражения (мудрёные для меня) выдают ошибку и у меня так и ничего не вышло. Хотя там авторизация не через OPEN API а http://vkontakte.ru/login.php?app=айди приложеня&layout=popup&type=browser&settings=16383

Есть догадка, что проблема в подписи которую я отсылаю на сервер(что чего-то там не хватает)
Подскажите как схитрить немного и получить данные со стен и статус!!!
andreyukricq
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45

Re: Получение данных с ВК API на другом сервере wall.get и др.

Сообщение andreyukricq »

Никто не может помочь? или это безнадежно?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Получение данных с ВК API на другом сервере wall.get и др.

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

andreyukricq писал(а):Есть догадка, что проблема в подписи которую я отсылаю на сервер(что чего-то там не хватает)
Если бы дело было в этом, то скорее всего об этом было бы написано в ответе от сервера.
Unknown method passed - при вызове с сервера может означать, что с сервера такой метод недоступен.
Можно попробовать вызвать нужные методы с помощью JavaScript.
andreyukricq
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45

Re: Получение данных с ВК API на другом сервере wall.get и др.

Сообщение andreyukricq »

посмотрел topic2700.html подпилил под cебя все методы работают, только 1 беда пользователю нужно на моем сайте давать свои пароль и логин, а было бы хорошо чтобы логинился как через OPEN API (только вот не знаю как потом данные сессии обратно в PHP загнать)
topic2700.html - здесь то все через CURL делается

Подскажите как из открывающегося окошка в котором
http://vkontakte.ru/api/login_success.h ... ed4acb6%22}
(данные сессии) забрать все эти параметры обратно в PHP с помощью javascript?
andreyukricq
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45

Re: Получение данных с ВК API на другом сервере wall.get и др.

Сообщение andreyukricq »

Как можно с их домена с помощью javascript в браузере перетянуть данные?
Вот эти
http://vkontakte.ru/api/login_success.h ... 88f11e0%22}
Ответить