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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)

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

Сообщение andreyukricq » 28 мар 2011, 14:30

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

php класс вот такой
  1. <?
  2. class VKapi
  3. {
  4.     private $api_secret;
  5.     private $api_id;
  6.     private $api_idcookie;
  7.    
  8.     function __construct()
  9.     {
  10.         $this->api_secret='HkLAPKSKg5uj4yDiYL5x';
  11.         $this->api_id='айди приложения';
  12.         $this->api_idcookie='vk_app_айди приложения';
  13.     }
  14.    
  15.     public function is_auth()
  16.     {
  17.         if (!isset($_COOKIE[$this->api_idcookie]))
  18.             return false;
  19.            
  20.         $vk_cookie = $_COOKIE[$this->api_idcookie];
  21.         if (!empty($vk_cookie)) {
  22.             $cookie_data = array();
  23.            
  24.             foreach (explode('&', $vk_cookie) as $item) {
  25.                 $item_data = explode('=', $item);
  26.                 $cookie_data[$item_data[0]] = $item_data[1];
  27.             }
  28.            
  29.             // Проверяем sig
  30.             $string = sprintf("expire=%smid=%ssecret=%ssid=%s%s", $cookie_data['expire'], $cookie_data['mid'], $cookie_data['secret'], $cookie_data['sid'], $this->api_secret);
  31.            
  32.             if (md5($string) == $cookie_data['sig']) {
  33.                 // sig не подделан - возвращаем ID пользователя ВКонтакте.
  34.                 $this->api_secret_cookie = $cookie_data['secret'];
  35.                 //echo $this->api_secret_cookie;
  36.                 //die();
  37.                 return $cookie_data['mid'];
  38.             }
  39.         }
  40.         return false;
  41.     }
  42.    
  43.     public function logout()
  44.     {
  45.         // Заменяем куку от ВКонтакте на пустую
  46.         if (setcookie($this->api_idcookie, '', 0, "/", '.'.$_SERVER['HTTP_HOST']))
  47.         {
  48.             return true;
  49.         }
  50.         return false;
  51.     }
  52.    
  53.  
  54.     function getProfiles ($uids)
  55.     {
  56.         $request['fields'] = 'uid,first_name,last_name,nickname,domain,sex,country,photo_big,contacts,online';
  57.         $request['uids']   = $uids;
  58.         $request['method'] = 'getProfiles';
  59.         return $this->request($request);
  60.     }
  61.    
  62.     function getFriends ($uids)
  63.     {
  64.         $request['fields'] = 'uid,first_name,last_name,nickname,domain,sex,country,photo_big,contacts,online';
  65.         $request['uid']   = $uids;
  66.         $request['method'] = 'friends.get';
  67.         return $this->request($request);
  68.     }
  69.    
  70.     function getStatus ($uids)
  71.     {
  72.         $request['uid'] = $uids;
  73.         $request['method'] = 'status.get';
  74.         return $this->request_other_method($request);
  75.     }
  76.    
  77.     function getWall ($uids)
  78.     {
  79.         $request['owner_id'] = $uids;
  80.         $request['count'] = 10;
  81.         $request['filter'] = 'all';
  82.         $request['method'] = 'wall.get';
  83.         return $this->request($request);
  84.     }
  85.  
  86.     function request($request)
  87.     {
  88.         $request['random']    = rand(100000,999999);
  89.         $request['timestamp'] = time();
  90.         $request['format']    = 'JSON';
  91.         $request['api_id']    = $this->api_id;
  92.         $request['v']    = '3.0';
  93.         ksort($request);
  94.         $str="";
  95.         foreach ($request as $key=>$value) {
  96.             $str.=trim($key)."=".trim($value);
  97.         }
  98.         $request['sig'] = md5(trim($str.$this->api_secret));
  99.         $q = http_build_query($request);
  100.         $result = json_decode(file_get_contents("http://api.vkontakte.ru/api.php?".$q),TRUE);
  101.         return $result;
  102.     }
  103. }
  104.  
  105. ?>


На сайте авторизуюсь через 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' и прочее должно работать)
+
посмотрел topic2700.html
но там регулярные выражения (мудрёные для меня) выдают ошибку и у меня так и ничего не вышло. Хотя там авторизация не через OPEN API а http://vkontakte.ru/login.php?app=айди приложеня&layout=popup&type=browser&settings=16383

Есть догадка, что проблема в подписи которую я отсылаю на сервер(что чего-то там не хватает)
Подскажите как схитрить немного и получить данные со стен и статус!!!
andreyukricq

 
Автор темы
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение andreyukricq » 29 мар 2011, 13:42

Никто не может помочь? или это безнадежно?
andreyukricq

 
Автор темы
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Александр » 29 мар 2011, 20:39

andreyukricq писал(а):Есть догадка, что проблема в подписи которую я отсылаю на сервер(что чего-то там не хватает)

Если бы дело было в этом, то скорее всего об этом было бы написано в ответе от сервера.
Unknown method passed - при вызове с сервера может означать, что с сервера такой метод недоступен.
Можно попробовать вызвать нужные методы с помощью JavaScript.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение andreyukricq » 30 мар 2011, 09:53

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

Подскажите как из открывающегося окошка в котором
http://vkontakte.ru/api/login_success.html#session={%22mid%22%3A373423576%2C%22sid%22%3A%228807018d4190f487c3ccdd04f37a656305cc00e23e8830de2290p5s82fd470%22%2C%22secret%22%3A%220478963d16%22%2C%22expire%22%3A0%2C%22sig%22%3A%2216668823ls37a7fd421fd1c63ed4acb6%22}
(данные сессии) забрать все эти параметры обратно в PHP с помощью javascript?
andreyukricq

 
Автор темы
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение andreyukricq » 01 апр 2011, 11:43

Как можно с их домена с помощью javascript в браузере перетянуть данные?
Вот эти
http://vkontakte.ru/api/login_success.html#session={%22mid%22%3A3242346576%2C%22sid%22%3A%22d1b2942597672176bee39dcee1a5030fb4a2d5008d7fd2b903cdf7e6d415ae%22%2C%22secret%22%3A%22eefd544eb3%22%2C%22expire%22%3A0%2C%22sig%22%3A%22e2e931fg3rt545f6233e38bb3188f11e0%22}
andreyukricq

 
Автор темы
Сообщения: 4
Зарегистрирован: 28 мар 2011, 13:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.


Вернуться в Создание Flash-приложений ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1