Wentus | Дата: Пятница, 01.11.2013, 18:58 | Сообщение # 1 |
Админ
Группа: Администраторы
Сообщений: 24
Статус: Offline
| В этом уроке мы научимся : 1. Создавать приложения 2. Авторизовываться с сайта через VK 3. Выводить данные из базы данных VK 4. Рассмотрим пару методов API
Шаг 1. Создание приложения
Начнем с создания приложения, в нашем случае это будет Приложение-Веб сайт Заходим на страничку разработчиков и жмем "Создать приложение".
Выбираем Вебсайт и вводим название приложения, ссылку до вашего сайта, где будет работать сам скрипт, и в отдельное окошко вводим только домен.
Шаг 2. Авторизация
Пожалуй, самая главная часть приложения. По FTP заходим в папку, где будет располагаться скрипт и закидываем туда все файлы из архива. ФАЙЛЫ
азберем каждый файл.
1 .htaccess
AddDefaultCharset UTF-8
Не сложно догадаться, что этот файл отвечает за кодировку, мы будем использовать только UTF-8 2. config.php
<?
// id приложения
define("CLIENT_ID", "1111111");
// защищенный ключ
define("SECRET", "qqqqqqqqqqqqqqqqqqqqq");
// куда перенаправим пользователя после авторизации
define("OAUTH_CALLBACK", "callback.php");
// настройки доступа
define("SCOPE", "friends,photos,wall,status,audio");
// путь к папке со скриптами
define("PATH", "http://web-ask.ru/vk/");
// включим сессию
session_start();
?>
Файл с настройками приложения. Тут надо будет ввести ID приложения, Защищенный ключ, Путь к папке со скриптами (слеш в конце обязателен).
Немного про настройки доступа У каждого метода API есть свои настройки доступа, т.е. прежде чем использовать этот метод надо запросить на него разрешение. Эти разрешения и прописываются в этом пункте. Для данного примера нам вообще не нужны разрешения, поскольку мы выводим только аватарку, имя, фамилию. Список прав
3. login.php
<?
require_once("config.php");
$link = 'http://api.vk.com/oauth/authorize?client_id='.CLIENT_ID.'&redirect_uri='.PATH.OAUTH_CALLBACK.'&display=popup&scope='.SCOPE.'&response_type=code';
?>
<a href='<? echo $link; ?>'>Вход</a>
Формируем строку для авторизации в переменной link и при нажатии на "Вход" переходим по этой ссылке. Документация на формирование ссылки авторизации.
4. redirect.php
<?
require_once("config.php");
header('Location: '.PATH.'login.php');
?>
Перекидывает не авторизованного пользователя на страницу авторизации.
5. callback.php
<?
require_once("config.php");
// получили параметр code
if($_REQUEST['code']) {
// получаем access_token
$resp = file_get_contents('https://api.vk.com/oauth/access_token?client_id='.CLIENT_ID.'&code='.$_REQUEST['code'].'&client_secret='.SECRET.'&redirect_uri='.PATH.OAUTH_CALLBACK);
$data = json_decode($resp, true);
if($data['access_token']){
// запишем данные в сессию
$_SESSION['access_token'] = $data['access_token'];
$_SESSION['user_id'] = $data['user_id'];
// переадресуем пользователя на нужную страницу
header('Location: '.PATH.'index.php');
exit();
}
}
?>
При авторизации нам сервер VK передал уникальную переменную code, которая нужна для получения access_token. В этом файле мы как раз и получаем этот access token. Документация (пункт 4)
6. index.php
<?
require_once("config.php");
if(isset($_SESSION['access_token'])) {
// получим профиль пользователя
$uid = $_SESSION['user_id'];
$resp = file_get_contents('https://api.vk.com/method/getProfiles?uids='.$uid.'&fields=photo_big&access_token='.$_SESSION['access_token']);
$data = json_decode($resp, true);
echo "
<img src='{$data[response][0][photo_big]}' style='border-radius: 4px;'>
<BR>
{$data[response][0][first_name]} {$data[response][0][last_name]}
";
} else {
require_once("redirect.php");
}
?>
Этот файл выведем нам все на экран, именно здесь мы будем дальше работать. Сначала файл проверяет получили ли мы acces token, если нет, то он отправляет нас на redirect.php , где мы должны будем его получить. В случае, если мы получили access token, то мы делаем запрос к методу getProfile(более подробно ниже) который нам может выдать следующие данные.
Метод GetProfile Рассмотрим наш код, в случаи, если авторизации прошла успешно:
// получим профиль пользователя
$uid = $_SESSION['user_id'];
$resp = file_get_contents('https://api.vk.com/method/getProfiles?uids='.$uid.'&fields=graduation,photo_big,nickname,domain,sex,bdate,city,country,timezone,has_mobile,rate,contacts,education,sex,online,home_phone,faculty _name,university_name&access_token='.$_SESSION['access_token']);
$data = json_decode($resp, true);
echo "
<img src='{$data[response][0][photo_big]}' style='border-radius: 4px;'>
<BR>
{$data[response][0][first_name]} {$data[response][0][last_name]}
";
1.
$uid = $_SESSION['user_id'];
В первой строчке мы из сессии высовываем id пользователя и присваиваем id переменной uid 2.
$resp = file_get_contents('https://api.vk.com/method/getProfiles?uids='.$uid.'&fields=photo_big&access_token='.$_SESSION['access_token']);
Делаем запрос. Запрос делается примерно так
file_get_contents('https://api.vk.com/method/метод?uids='.$uid.'&fields=поля, которые нам нужны&access_token='.$_SESSION['access_token']);
Разумный человек задался бы вопросом "Как так? Мы выводим Имя, Фамилию, Аватарку, а в полях перечислили только аватарку" Дело в том, что метод GetProfiles автоматически выводит Имя и Фамилию, т.е. их прописывать не обязательно. Все возможные поля метода getProfiles и его описание можно узнать здесь 3. В ответ мы получим JSON массив, который необходимо "декодировать", что мы и сделаем следующей строчкой
$data = json_decode($resp, true);
Теперь, чтобы наглядно понимать, что мы сделали, вставьте после
$data = json_decode($resp, true);
такой код
print_r($resp);
Перейдите на ваш сайт и вы увидите
{"response":[{"uid":айди,"first_name":"Имя","last_name":"Фамилия","photo_big":"ссылка на фото"}]}
выводить из массива данные нужно вот так
{$data[response][0][first_name]}
т.е.
{$переменная массива[response][номер элемента массива][поле]}
так как у нас один элемент массива
{"uid":айди,"first_name":"Имя","last_name":"Фамилия","photo_big":"ссылка на фото"}
А нумерация массивов начинается с нуля, то мы и получили
{$data[response][0][first_name]}
Пишите свои вопросы ниже, в комментариях.
|
|
| |