[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Вебмастеру » Полезные статьи » VK API PHP (Авторизация vk api php)
VK API PHP
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]}

Пишите свои вопросы ниже, в комментариях. biggrin
Прикрепления: VK.rar (1.7 Kb)
 
Форум » Вебмастеру » Полезные статьи » VK API PHP (Авторизация vk api php)
  • Страница 1 из 1
  • 1
Поиск: