video.get works in browser not in PHP script

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
MexRus
Сообщения: 5
Зарегистрирован: 21 сен 2010, 13:24

video.get works in browser not in PHP script

Сообщение MexRus »

Hi!
I wrote a little program using the vkapi.class.php, I show the result on the browser.. cut and paste it
and works, but when I use the program.. show the Incorrect signature message!!
http://api.vkontakte.ru/api.php?api_id= ... =XXX&v=3.0

When I copy the result on the browser, always works.. not in my script using

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

     $VK = new vkapi($api_id, $session['secret'], $session['mid'], $session['sid']); $resp = $VK->api('video.get', array('uid'=>'XXXXX'));  <?php/** * VKAPI class for vk.com social network * * @package server API methods * @link http://vk.com/developers.php * @autor Oleg Illarionov * @changed:  some changes by me * @version 1.0 */ class vkapi {    var $api_secret;    var $app_id;    var $api_url;       var $api_user;       var $api_sid;       var $params1;        function vkapi($app_id, $api_secret, $api_user, $api_sid, $api_url = 'api.vk.com/api.php') {        $this->app_id = $app_id;        $this->api_secret = $api_secret;        $this->api_user = $api_user;        $this->api_sid = $api_sid;        if (!strstr($api_url, 'http://')) $api_url = 'http://'.$api_url;        $this->api_url = $api_url;    }     function api($method,$params=false) {        if (!$params) $params = array();         $params['api_id'] = $this->app_id;        $params['v'] = '3.0';        $params['method'] = $method;        $params['timestamp'] = time();        $params['format'] = 'JSON';        $params['random'] = rand(1,10000);                $params['callback'] ='VK.Api._callbacks[' . rand(1,999999) . ']';                 ksort($params);                $sid = array();           $sid[] = $this->api_user;              foreach ($params as $k => $v)              {                  $sid[] = "$k=$v";              }             $sid[] = $this->api_secret;                  $params['sig'] = md5(join('', $sid));         $params['sid'] = $this->api_sid;             $url = "http://api.vkontakte.ru/api.php";            $params1 = $this->params($params);              echo $url . "?" . $params1;  // work in the browser with cut and paste            $ress =  file_get_contents($url . "?" . $params1);  // got the Incorrect signature message! }      function params($params) {        ksort($params);        $pice = array();        foreach($params as $k=>$v) {            $pice[] = $k.'='. urlencode($v);         }        return implode('&',$pice);    }    
Some help would be appreciate!
Thanks in advance
Аватара пользователя
paduchin
FL Team
FL Team
Сообщения: 318
Зарегистрирован: 01 мар 2010, 14:20

Re: video.get works in browser not in PHP script

Сообщение paduchin »

What ? We from Russia

Это как бы Русский сайт :D
MexRus
Сообщения: 5
Зарегистрирован: 21 сен 2010, 13:24

Re: video.get works in browser not in PHP script

Сообщение MexRus »

Not only Russians

http://www.vk.com
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: video.get works in browser not in PHP script

Сообщение bodnar »

When you open url from browser Vkontakte read cookies. If you open this page from php script cookies doesn't get, becouse video.get not a server method. It seems to be so.

Sorry for my English :lol:

paduchin, можно подумать ты никогда не задавал вопросы на иностранных форумах.
MexRus
Сообщения: 5
Зарегистрирован: 21 сен 2010, 13:24

Re: video.get works in browser not in PHP script

Сообщение MexRus »

I used this one, but also dont work!

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

        $url ="http://www.vkontakte.ru/api.php";          $ch = curl_init($url . "?" . $params1);         echo "<br><b>\n";         echo $url . "?" . $params1;         echo "</b><br>\n";       curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);        curl_setopt($ch, CURLOPT_HEADER, TRUE);       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_REFERER, "http://www.vkontakte.ru/api.php");       print  $_COOKIE['vk_app_'.APP_ID];      curl_setopt($ch, CURLOPT_VERBOSE, 1);      curl_setopt($ch, CURLOPT_COOKIE, "remixchk=5; remixsid=d9fc368328df70e7f6b086a99bd183260bbd034dc33d8b1a6ccb842f; " . "l=XXXX; p=XXX0326678760d8f3a251fffbf7fd358c68e; vk_app_".  APP_ID  ."=" . $_COOKIE['vk_app_'.APP_ID]);          $json = curl_exec($ch);         print $json; 
Ладно я тоже по русский не очень :) просто мне лекчк написать на англиском.. (можно и на испанском :) )
но не понимаю чем дело.. все cookie которое у меня было в browser я отдал обратно...
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: video.get works in browser not in PHP script

Сообщение 112 »

I'am is very stupid,but i a little know eng.
I just wonder why in your api seen you in Moscow?
Information that your api Moscow was taken from here
http://ip-whois.net/ip_geo.php?ip=195.239.199.18
But if i wrong i'am sorry...
I'm very sorry for my English too ;)
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: video.get works in browser not in PHP script

Сообщение bodnar »

api и ip две разные вещи
MexRus
Сообщения: 5
Зарегистрирован: 21 сен 2010, 13:24

Re: video.get works in browser not in PHP script

Сообщение MexRus »

Ну и как?

Работаеть или нет этот API с SET cookie, вот у меня было такая идея.. но
можеть и session в стороне сервер :(
у меня тупик....
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: video.get works in browser not in PHP script

Сообщение 112 »

bodnar писал(а):api и ip две разные вещи
=(
как обычно...моя не внимательность=(
MexRus
Сообщения: 5
Зарегистрирован: 21 сен 2010, 13:24

Re: video.get works in browser not in PHP script

Сообщение MexRus »

Ок ок это не важно :) давай я попробую написать на великый и могучый Русский язык.
во первый, мой запрос делаю нормально т.к. если делаю cut & paste работаеть в browser...

осталось только с cookiе но я передаю их всех в скрипте

проверял их

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

$_COOKIE VARS=Array(    [remixchk] => 5    [remixsid] => d9fc368328df70e7f6b086a99bd183260bbd034dc33d8b1a6ccb842f    [l] => XXX    [p] => 29e0326678760d8f3a251fffbf7fd358c68e    [vk_app_API_ID] => expire=1285077610&mid=XXX&secret=743b7eabd0&sid=29b2ea83be902d8a5238dfe651158375846e09bcd48e84afc7147b9d16&sig=5a7dc7f45bd9b8717713165ca95eb91d)  $_GET VARS =Array(    [api_id] => API_ID    [callback] => VK.Api._callbacks[904193]    [format] => JSON    [method] => video.get    [random] => 9624    [sid] => 29b2ea83be902d8a5238dfe651158375846e09bcd48e84afc7147b9d16    [sig] => 6b7069e2c84e19fddd6b831900079f48    [timestamp] => 1285074022    [uid] => XXX    [v] => 3.0)   HEADER=  HTTP_ACCEPT = */*HTTP_ACCEPT_CHARSET = windows-1251,utf-8;q=0.7,*;q=0.7HTTP_ACCEPT_LANGUAGE = ru,en-us;q=0.7,en;q=0.3HTTP_CONNECTION = closeHTTP_COOKIE = remixchk=5; remixsid=d9fc368328df70e7f6b086a99bd183260bbd034dc33d8b1a6ccb842f; l=XXX; p=29e0326678760d8f3a251fffbf7fd358c68e; vk_app_API_ID=expire=1285077610&mid=XXX&secret=743b7eabd0&sid=29b2ea83be902d8a5238dfe651158375846e09bcd48e84afc7147b9d16&sig=5a7dc7f45bd9b8717713165ca95eb91dHTTP_HOST = http://www.url.ruHTTP_KEEP_ALIVE = 115 HTTP_REFERER = http://www.vkontakte.ru/api.phpHTTP_USER_AGENT = Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8HTTP_VIA = tproxy.http.nic.ru:3128 (Oops 1.5.23), proxy02.nic.ru:80 (Oops 1.5.23)    
Но можеть у сервера есть SESSION(), если так.. не будеть работать .. прабильно я понимаю?
вот и жесть ...

 
Ответить