Социальная сеть «В Контакте» создала довольно удобную и уже известную для популярных порталов и просто тематических сайтов вещь, как «В Контакте API» (Далее — API).
Наверное много людей до сих пор используют GET запросы для обращения к API, мне кажется это не правильным, код нужно упрощать, ведь простой код — залог успеха работы программы. Я решил написать PHP — класс для работы с этим самым API.
Давайте рассмотрим его:
И сразу же рассмотрим его применение:
Этот небольшой скрипт создан для отправки MP3 — файла на сервера «В Контакте» и последующего хранения.
Попробую рассказать как работать с этим самым классом:
1. Создаем на сервере папку api (к примеру), а в ней папку files и присвоим ей права(CHMOD) 0777, 0777 — права на запись файлов в папку.
2. Создаем файл vk-api.class.php, вставляем в него код моего класса и сохраняем.
3. Создаем файл index.php (файл скрипта) и вставляем в него код моего скрипта.
А теперь рассмотрим отдельные участки кода и посмотрим за что они отвечают:
Как видите работать с API не так уж и тяжело.
Хотите написать собственное приложение? Легко!
Давайте рассмотрим на примере приема двух профилей социальной сети «В Контакте»:
С нетерпением жду ваших вопросов.
Наверное много людей до сих пор используют GET запросы для обращения к API, мне кажется это не правильным, код нужно упрощать, ведь простой код — залог успеха работы программы. Я решил написать PHP — класс для работы с этим самым API.
Давайте рассмотрим его:
<?php
/**
* VK API class for vk.com
*
* @package API Tools
* @link http://vk.com/byvlad
* @author Vladyslav Karpenko
* @version 1.0
*/
class vkapi {
public $api_secret;
public $app_id;
public $api_uid;
function __construct($app_id, $api_key, $api_uid) {
$this -> app_id = $app_id;
$this -> api_key = $api_key;
$this -> api_uid = $api_uid;
}
function api($method, $params = false){
if (!$params)
$params = array();
$params['api_id'] = $this->app_id;
$params['method'] = $method;
$params['test_mode'] = 1;
$params['v'] = '2.0';
ksort($params);
$sig = '';
foreach($params as $k=>$v)
$sig .= $k . '=' . $v;
$params['sig'] = md5($this->api_uid . $sig . $this->api_key);
$ch = curl_init('http://api.vk.com/api.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://vk.com/app' . $this->app_id);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.00');
$data = curl_exec($ch);
curl_close($ch);
return simplexml_load_string($data);
}
function params($params) {
$pice = array();
foreach($params as $k=>$v) {
$pice[] = $k . '=' . urlencode($v);
}
return implode('&',$pice);
}
function file_send($url, $file, $path) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file1' => '@' . $path . $file));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = json_decode(curl_exec($ch));
curl_close($ch);
return $data;
}
}
?>
И сразу же рассмотрим его применение:
<?php
require_once 'vk-api.class.php';
$api_id = 7777777; // ID вашего приложения
$api_key = '77wc6dqk28r'; // Ключ приложения
$api_uid = 777777; // ID пользователя приложения
$path = $_SERVER['DOCUMENT_ROOT'] . (dirname($_SERVER['REQUEST_URI'])=='/' ? dirname($_SERVER['REQUEST_URI']) : dirname($_SERVER['REQUEST_URI']).'/');
if(isset($_FILES['file1']) and !in_array(pathinfo($_FILES['file1']['tmp_name'], PATHINFO_EXTENSION), array('mp3'))) {
$file = 'files/' . substr(uniqid(), 0, 6) . '.' . pathinfo(basename($_FILES['file1']['name']), PATHINFO_EXTENSION);
move_uploaded_file($_FILES['file1']['tmp_name'], $file);
$VK = new vkapi ($api_id, $api_key, $api_uid);
$Server = $VK -> api('audio.getUploadServer');
$Upload = $VK -> file_send($Server -> upload_url, $file, $path);
$Save = $VK -> api('audio.save', array('hash' => $Upload -> hash, 'audio' => $Upload -> audio, 'server' => $Upload -> server));
unlink($file);
nl2br(print_r($Save));
}
echo 'Выберите MP3-файл:
/>
/>
';
?>
Этот небольшой скрипт создан для отправки MP3 — файла на сервера «В Контакте» и последующего хранения.
Попробую рассказать как работать с этим самым классом:
1. Создаем на сервере папку api (к примеру), а в ней папку files и присвоим ей права(CHMOD) 0777, 0777 — права на запись файлов в папку.
2. Создаем файл vk-api.class.php, вставляем в него код моего класса и сохраняем.
3. Создаем файл index.php (файл скрипта) и вставляем в него код моего скрипта.
А теперь рассмотрим отдельные участки кода и посмотрим за что они отвечают:
<?php
// Подключение к классу и ввод данных для дальнейшего подключения к API - серверам
$VK = new vkapi ($api_id, $api_key, $api_uid);
// Для загрузки файла нам потребуется узнать на какой именно сервер он будет загружен
$Server = $VK -> api('audio.getUploadServer');
// Производим отправку файла POST - методом, где:
// $Server -> upload_url - URL сервера, $file - путь к файлу, $path - путь к папке скрипта
$Upload = $VK -> file_send($Server -> upload_url, $file, $path);
// После загрузки нам потребуется сохранить файл, сделаем это!
// audio.save - метод, $Upload -> hash - хэш файла, $Upload -> audio - буквенный ID трека,
// $Upload -> server - сервер, на котором будет сохранен файл
$Save = $VK -> api('audio.save', array('hash' => $Upload -> hash, 'audio' => $Upload -> audio, 'server' => $Upload -> server));
// Удаляем локальный файл
unlink($file);
// Выводим информацию о сохраненном файле
nl2br(print_r($Save));
?>
Как видите работать с API не так уж и тяжело.
Хотите написать собственное приложение? Легко!
Давайте рассмотрим на примере приема двух профилей социальной сети «В Контакте»:
<?php
require_once 'vk-api.class.php';
$api_id = 7777777; // ID вашего приложения
$api_key = '77wc6dqk28r'; // Ключ приложения
$api_uid = 777777; // ID пользователя приложения
// Традиционное подключение к API
$VK = new vkapi ($api_id, $api_key, $api_uid);
// Узнать информацию о профилях нам поможет метод - getProfiles, где uids - ID интересующих нас пользователей
$xml = $VK -> api('getProfiles', array('uids' => '11838171, 15751729'));
nl2br(print_r($xml));
/*
В ответ получаем:
SimpleXMLElement Object
(
[@attributes] => Array
(
[list] => true
)
[user] => Array
(
[0] => SimpleXMLElement Object
(
[uid] => 11838171
[first_name] => Владислав
[last_name] => Карпенко
)
[1] => SimpleXMLElement Object
(
[uid] => 18528788
[first_name] => Masha
[last_name] => Shevchenko
)
)
)
*/
?>
С нетерпением жду ваших вопросов.