Как осуществить вызов VK API ?

Создание Desktop-приложений, виджеты ВКонтакте для сайтов и публичных страниц, OAuth 2.0, Open API, Standalone
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как осуществить вызов VK API ?

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

handler писал(а):С третим все понятно (относительно), а вот как быть с первыми двумя? В чем их отличие?
Первый - для доступа к данным пользователя на внешнем сайте. Второй - для доступа к данным пользователя внутри мобильного приложения.
В обоих случаях надо чтобы был конкретный пользователь, от которого будут вызываться методы.
Максимум что можно сделать, это при авторизации пользователя запросить параметр offline, чтобы можно было совершать запросы от этого пользователя без его участия. Но используется конкретный аккаунт.
http://vk.com/developers.php?oid=-1&p=% ... 0%B8%D0%B9

Вы хотя бы попробуйте код из статьи на которую я дал ссылку. Сейчас вижу что у вас нет никакого представления о том как это работает. Вижу только "почему работает не так как мне надо". Потому что так решила сделать администрация ВКонтакте. Этих методов авторизации достаточно для взаимодействия с API в мирных целях.


Как я уже писал, некоторые методы можно вызывать вообще без авторизации.
Например, likes.getList - в документации явно описано, что метод можно вызывать без авторизации.

Весь код

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

$res = file_get_contents('https://api.vk.com/method/likes.getList?type=sitepage&owner_id=1942958&page_url=http://flapps.ru/vk-gifts/gift485');$resp = json_decode($res, true);   echo 'Количество лайков: '.$resp['response']['count'];
Какие-то методы может получиться вызвать таким же способом без авторизации. Но для большинства нужна авторизация. Если в документации явно не написано, что авторизация не требуется, то со временем вызов без авторизации может перестать работать.
handler писал(а):И какова роль приложения на стороне vk.com ?
Когда от этого приложения будет совершаться много сомнительных обращений к API, ВКонтакте смогут его просто забанить. То же самое и при обращениях от конкретного пользователя. Работа с API с фейковых аккаунтов для сбора какой-то статистики - это явно не в интересах ВКонтакте.
handler
Сообщения: 9
Зарегистрирован: 10 сен 2012, 14:00

Re: Как осуществить вызов VK API ?

Сообщение handler »

Спасибо, приведенный Вами пример работает: я скопировал Ваш код в файл test.php и затем выполнил его командой "php test.php".
Теперь у меня вопрос: почему я не смог получить ответ, послав тот же запрос вместо

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

 file_get_contents('https://api.vk.com/method/likes.getList?type=sitepage&owner_id=1942958&page_url=http://flapps.ru/vk-gifts/gift485'); 
такой

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

 curl https://api.vk.com/method/likes.getList?type=sitepage&owner_id=1942958&page_url=http://flapps.ru/vk-gifts/gift485 
И еще: я пытаюсь авторизоваться на примере Вашего кода

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

 file_get_contents('http://oauth.vk.com/authorize?client_id=3116273&scope=wall&redirect_uri=http://diplom.olymp.dp.ua/del.php&display=page&response_type=token'); 
Тоже неправильно делаю.
А как правильно?
PS. I'm puzzled and exhausted
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как осуществить вызов VK API ?

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

Можно открыть ссылку
https://api.vk.com/method/likes.getList ... ts/gift485
прямо в браузере и будет получен ответ в формате json. Тут проблему надо искать в curl.


response_type=token - это для Desktop приложений.
Для доступа к API ВКонтакте из любого Standalone-приложения предусмотрен механизм клиентской авторизации на базе протокола OAuth 2.0. В качестве клиента может выступать любое Desktop/мобильное приложение, имеющее доступ к управлению Web-браузером (например, компонент UIWebView при создании приложения для iOS).
http://vk.com/developers.php?oid=-1&p=% ... 0%B8%D0%B9
nezzard
Сообщения: 2
Зарегистрирован: 18 янв 2013, 15:59

Re: Как осуществить вызов VK API ?

Сообщение nezzard »

Ребята что я делаю не так?

В одном файле

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

<?php$link = 'http://api.vk.com/oauth/authorize?client_id=3364123&redirect_uri=***&display=popup&scope=1026+8&response_type=code';?><a href="<?php echo $link;?>">Войти</a> 
В другом

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

  <?php  <?php  session_start();$urlcode = '*******';echo $resp = file_get_contents('https://api.vk.com/oauth/access_token?client_id=3364123&code='.$_REQUEST['code'].'&client_secret=aXg2XezjY2fFQVD2vw31'.'&'.'redirect_uri='.$urlcode);echo $resp = file_get_contents('https://api.vkontakte.ru/method/getProfiles?uids='.$_SESSION['user_id'].'&fields=photo_big&access_token='.$_SESSION['access_token']);  echo $_SESSION['access_token'];echo $resp = file_get_contents('https://api.vk.com/method/audio.search?q=adele&count=1&access_token='.$_SESSION['access_token']);?>   
Во втором проверяю на своем профиле выдает инфу или нет, потом пытаюсь audio.search и выдает ошибку

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

{"error_code":7,"error_msg":"Permission to perform this action is denied","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"audio.search"},{"key":"q","value":"adele"},{"key":"count","value":"1"},{"key":"access_token","value":"0823cba7b87a13f2455a82e8da2bc436a8b95f64a005506c3c9fed2bd29026ceebbaf4dd82de283a14529"}]}}
Заметил что в первой строке токен отличается от того который в ошибке. Почему так?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как осуществить вызов VK API ?

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

nezzard
Другие методы работают?
Если указать

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

scope=audio
а не 1026+8?
Если использовать код из темы Серверная авторизация ВКонтакте на базе протокола OAuth 2.0?
Ответить