Вітаю, дорогі друзі! Якось недавно мені треба було зробити на одному зі своїх сайтів вхід через «вконтакте». Це дуже зручно, так як немає необхідності в реєстрації на самому сайті, а відразу ж користуватися всіма його можливостями зі свого аккаунта «вконтакте». Довелося вникати в тонкощі для здійснення цього завдання. До речі, до слова сказати, в самій офіційній документації по ВК API написано небагато, та й все дуже заплутано.
Отже, для того щоб почати користуватися ВК API, нам потрібно створити новий додаток «Вконтакте». Робимо це так: переходимо за посиланням: http://vk.com/editapp?act=create , Вибираємо «веб-сайт», вводимо ім'я нашого застосування, а також адреса сайту, до якого воно прив'язане і базовий домен нашого сайту.
Після створення, нам стали відомі ID нашого створеного додатки, а також секретний код, який тому і «секретний» що не варто його публікувати, отже нижче написаний id і secret code вигадані. :)
ID: 3328234
Secret Code: Q5f2PSwkiFw23TysdDgr
Тепер починаємо «кодувати». Створюємо файл «vklogin.php», наприклад, в корені сайту. А шаблон або код вставляємо наступне посилання:
https://oauth.vk.com/authorize?client_id=3328234&scope=1&redirect_uri=http://www.mydomain.ru/vklogin.php&response_type=code
Це може бути текстове посилання на сайті, посилання-картинка або навіть переадресація з js скрипта. Головне, що натиснувши на неї, користувач перейшов по цьому адресу. Тепер про переданих параметрах: client_id - це ідентифікатор нашого застосування ВК, redirect_uri - адреса на нашому сайті, куди буде переадресовано користувач, після отримання прав «Вконтакте», response_type - це тип авторизації, який в нашому випадку з використання коду. Після переходу по даній посилання, користувач побачить наступну сторінку сайту «Вконтакте»:
Після того як користувач натисне «Дозволити», тим самим делегує права вашому сайту, він буде переадресовано на наш скрипт «vklogin.php». Далі привожу сам скрипт, пояснення пізніше.
<? Php $ VK_APP_ID = "3328234"; $ VK_SECRET_CODE = "Q5f2PSwkiFw23TysdDgr"; if (! empty ($ _ GET [ 'code'])) {$ vk_grand_url = "https://api.vk.com/oauth/access_token?client_id=".$VK_APP_ID."&client_secret=".$VK_SECRET_CODE."&code = ". $ _ GET [ 'code']." & redirect_uri = http: //www.mydomain.ru/vklogin.php "; // відправляємо запит на отримання access token $ resp = file_get_contents ($ vk_grand_url); $ Data = json_decode ($ resp, true); $ Vk_access_token = $ data [ 'access_token']; $ Vk_uid = $ data [ 'user_id']; // звертаємося до ВК Api, отримуємо ім'я, прізвище та ID користувача вконтакте // метод users.get $ res = file_get_contents ( "https://api.vk.com/method/users.get?uids=". $ Vk_uid. "& access_token =". $ vk_access_token. "& fields = uid, first_name, last_name, nickname, photo"); $ Data = json_decode ($ res, true); $ User_info = $ data [ 'response'] [0]; echo $ user_info [ 'first_name']. "". $ user_info [ 'last_name']. "
"; Echo" <img src = ' ". $ User_info [' photo ']."' Border = "0" /> ";}?>
Отже, зі змінними ID і Sercet Code думаю все ясно. Далі перевіряємо, чи передали нам ВК при редирект параметр «code», який ми додаємо до новоствореного url і знову звертаємося до «контакту», але вже безпосередньо з нашого скрипта. Для цього використовуємо функцію «file_get_contents».
На даному етапі, слід загострити увагу на кількох важливих зауваженнях:
1. Даний код врят-чи вийде тестувати на локальному сервері (наприклад, на «Дервере»), а також, на використовуваному сервері, в налаштування php.ini, директива «allow_url_fopen» повинна бути встановлена в «1».
2. На використовуваному сервері повинен бути встановлено розширення json для PHP.
3. І саме підступне, на чому я спіткнувся. Параметри «redirect_uri» в обох запитах до API, повинні бути абсолютно однаковими.
Залишилося тільки згадати про саму роботу з ВК API. Як ви помітили, після другого запиту до ВК, ми отримали параметри «access_token» і «user_id». На даному етапі ми вже авторизовані на ВК і можемо звертатися до API, використовуючи 2 ці змінні.
В останньому запиті до ВК API, ми використовуючи метод «users.get», отримуємо ім'я користувача ВК, прізвище, а також ID користувача і просто виводимо їх. Для конкретної реалізації логіна на сайті через ВК, все залежить від використовуваної CMS. Якщо у Вас власноруч написана CMS, ви може надійти наступного чином. Наприклад, зберігати ID користувача в сесійних змінних $ _SESSION [ 'vk_id'] і $ _SESSION [ 'vk_login'] попередньо обнулила першу. І перевірять авторизацію користувача за значенням «vk_id».
Більш детально, про роботу з ВК API ви зможете прочитати, за наступними посиланнями:
Офіційна документація по ВК API: http://vk.com/developers.php
Авторизація через Вконтакте: http://habrahabr.ru/post/92518/
Проблему підключення авторизації до вашої CMS вам доведеться вирішувати самим. Моїм завданням було тільки направити Вас в потрібному напрямку. :) Удачі Вам!
Com/editapp?Com/authorize?
Lt;?
Com/oauth/access_token?
Get?
Border = "0" /> ";}?