Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Класс для обращения к API ВКонтакте

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: по новому протоколу OAuth
nikob
Отправлено: 23 Мая, 2011 - 11:15:56
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Апр. 2011  


Помог: 1 раз(а)




До этого сделал функцию для обращения к API ВКонтакте, но практически сразу, ВКонтакте внедрили протокол OAuth, следовательно изменился механизм операция с API (хотя старый способ работает).

PHP:
скопировать код в буфер обмена
  1. class vkapi {
  2.  
  3.         function __construct() {
  4.                 if (!function_exists('json_decode')) {
  5.                         $this->error(1);
  6.                 }
  7.         }
  8.  
  9.         private $app_id;
  10.         private $secret;
  11.         private $token;
  12.  
  13.         private $errors = array(
  14.                 1 => "No JSON support! To use this class install JSON addon.",
  15.                 2 => "Incorrect APP ID format! It must be numeric and contain at least 1 character.",
  16.                 3 => "Incorrect SECRET format! It must contain at least 1 character.",
  17.                 4 => "Incorrect APP ID or SECRET!",
  18.                 5 => "Incorrect METHOD name, during query!",
  19.                 6 => "Incorrect PARAMS array, during query!",
  20.                 7 => "Authorize first!"
  21.         );
  22.        
  23.         function auth($app_id, $secret) {
  24.  
  25.                 if (intval($app_id)>0 && strlen($secret)>0) {
  26.                         $this->app_id = $app_id;
  27.                         $this->secret = $secret;
  28.                         $url = 'https://api.vkontakte.ru/oauth/access_token/?client_id='.$this->app_id.'&client_secret='.$this->secret.'&grant_type=client_credentials';
  29.                         $ch = curl_init($url);
  30.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  31.                         $answer = curl_exec($ch);
  32.                         curl_close($ch);
  33.                         $answer = json_decode($answer, true);
  34.                         $this->token = $answer['access_token'];
  35.                         if (strlen($this->token<1)) {
  36.                                 $this->error(4);
  37.                         }
  38.                 } else {
  39.                         if (intval($app_id)<1) {
  40.                                 $this->error(2);
  41.                         }
  42.                         if (strlen($secret)<1) {
  43.                                 $this->error(3);
  44.                         }
  45.                 }
  46.  
  47.         }
  48.        
  49.         function query($method, $params) {
  50.                 if (strlen($this->token<1)) {
  51.                         $this->error(7);
  52.                 }
  53.                 $url = 'https://api.vkontakte.ru/method/';
  54.                 if (strlen($method)>0 && count($params)>0) {
  55.                         $url .= $method.'?';
  56.                         while (list($key, $var) = each($params)) {
  57.                                 $url .= "$key=$var&";
  58.                         }
  59.                         $url .= 'access_token='.$this->token;
  60.                         $ch = curl_init($url);
  61.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  62.                         $answer = curl_exec($ch);
  63.                         curl_close($ch);
  64.                         $answer = json_decode($answer, true);
  65.                         return $answer;
  66.                 } else {
  67.                         if (strlen($method)<1) {
  68.                                 $this->error(5);
  69.                         }
  70.                         if (count($params)<1) {
  71.                                 $this->error(6);
  72.                         }
  73.                 }
  74.         }
  75.        
  76.         function rand() {
  77.         return rand(10000,99999);
  78.         }
  79.        
  80.         private function error($error_num) {
  81.                 die("<b>VK API Class error #$error_num:</b> ".$this->errors[$error_num]);
  82.         }
  83.        
  84. }


ВНИМАНИЕ: данный класс работает только с методами secure (secure.sendNotification например). Полный список secure методов смотрите на сайте ВКонтакте.

Пример использования класса:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. require_once 'vkclass.php';
  4.  
  5. $appid = 1234567;
  6. $secret = 'app_secretkey';
  7.  
  8. $vk = new vkapi;
  9. $vk->auth($appid, $secret);
  10.  
  11. $method = 'secure.setCounter';
  12. $params = array(
  13. 'timestamp' => time(),
  14. 'random'    => $vk->rand(),
  15. 'uid'       => 1,
  16. 'counter'   => 123
  17. );
  18.  
  19. $res=$vk->query($method, $params);
  20. print_r($res);
  21.  
  22. ?>


Удачного использования Подмигивание

С удовольствием выслушаю ваши пожелания и замечания! (класс в последствии будет усовершенствоваться)
 
 Top
tiHo
Отправлено: 23 Мая, 2011 - 17:29:01
Post Id


Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Авг. 2008  


Помог: 0 раз(а)




Спасибо за класс.
 
 Top
spacer
Отправлено: 05 Июня, 2011 - 16:44:17
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




nikob, подскажи как получить список видеозаписей пользователя, все перепробовал, выдает ошибки ошибки ошибки ...
(Добавление)
странно, этот класс тоже не смог запустить, говорит: Incorrect APP ID or SECRET!

хотя приложение создано, уже сил никаких нет, б... , ну как он работает ешкин кот ?
 
 Top
ALEN Модератор
Отправлено: 05 Июня, 2011 - 19:08:39
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




spacer
впиши сюда свой APP ID or SECRET
$secret = 'app_secretkey';
 
 Top
spacer
Отправлено: 05 Июня, 2011 - 19:54:10
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




это естественно, у меня подозрение, что в приложении в настройках vk, что то нужно съделать, уже включил там все, может после создания приложения нужно ждать, что через какое-то время vk дает добро?

ALEN пишет:
spacer
впиши сюда свой APP ID or SECRET
$secret = 'app_secretkey';

(Добавление)
пожалуйста, кто-нибудь может показать рабочий класс friends.get, что за битовая маска как ее получить и куда ее вписать ?
 
 Top
ex_mac
Отправлено: 11 Июля, 2011 - 22:34:04
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Думаю что проблема с авторизацией
в этой вот строчке

if (strlen($this->token<1)) {

так с виду и непонятно где собака Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB