Выкладываю свою реализацию авторизации Вконтакте.
Описания функций класса
Пример авторизации
Класс
Описания функций класса
Скрытый текст:
PHP код:
/**
Function - Запрашивает авторизацию
string $Login - Логин
string $Pass - Пароль
return BOOL - В случае удаче true иначе false
**/
public static function Auth($Login, $Pass)
/**
Function - Возвращает массив [access_token, expires_in, user_id]
Или одну из указанных ячеек.
string $Key - Ключ ячейки из массива [access_token, expires_in, user_id] или вернет все сразу
return Array\string
**/
public static function User($Key = null)
/**
Function - Устанавливает UserAgent запроса, либо получает
RETURN Void\String
**/
public static function UserAgent($UserAgent = null)
/**
Function - Устанавливает клиент авторизации, либо получает
RETURN Void\String
**/
public static function Client_Id($client_id = null)
/**
Function - Устанавливает куки запроса, либо получает
RETURN Void\String
**/
public static function FileCookie($FileCookie = null)
/**
Function - Проверят, авторизован ли пользователь
RETURN BOOL
**/
public static function IsAuth()
Пример авторизации
PHP код:
if(SendAuthVk::auth('Логин', "Пароль")) {
pre(SendAuthVk::User());
pre(SendAuthVk::User('access_token')); // Получаем тока аксес токен
}
Класс
Скрытый текст:
PHP код:
class SendAuthVk {
private static $User;
private static $IsAuth = false;
static $client_id = 4961926;
static $FileCOOKIE = 'SendVk.cookie';
static $USERAGENT = 'Mozilla/5.0 (Windows NT 6.3; rv:38.0) Gecko/20100101 Firefox/38.0';
/**
Function - Запрашивает авторизацию
string $Login - Логин
string $Pass - Пароль
return BOOL - В случае удаче true иначе false
**/
public static function Auth($Login, $Pass) {
self::$User = null;
self::$IsAuth = false;
if(empty($Login) and empty($Pass)) return false;
if(file_exists(self::$FileCOOKIE)) unlink(self::$FileCOOKIE);
$Vk = curl_init('http://m.vk.com/');
curl_setopt_array($Vk, array(
CURLOPT_USERAGENT => self::$USERAGENT,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_COOKIEFILE => self::$FileCOOKIE)
);
preg_match('/<form method="post" action="([\w\W]+)" novalidate>/U', curl_exec($Vk), $Url);
if(empty($Url[1])) {
curl_close($Vk);
return false;
}
curl_setopt($Vk, CURLOPT_URL, $Url[1]);
curl_setopt($Vk, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($Vk, CURLOPT_HTTPHEADER, array('Host' => 'login.vk.com'));
curl_setopt($Vk, CURLOPT_POST, true);
curl_setopt($Vk, CURLOPT_POSTFIELDS, http_build_query(array('email' => (string)$Login, 'pass' => (string)$Pass)));
curl_exec($Vk);
curl_setopt($Vk, CURLOPT_URL, curl_getinfo($Vk, CURLINFO_EFFECTIVE_URL));
curl_setopt($Vk, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($Vk, CURLOPT_HTTPHEADER, array('Host' => 'm.vk.com'));
curl_setopt($Vk, CURLOPT_POST, false);
curl_exec($Vk);
curl_setopt($Vk, CURLOPT_URL, 'http://oauth.vk.com/authorize?client_id='.self::$client_id.'&scope=2079999&redirect_uri=https://oauth.vk.com/blank.html&display=wap&response_type=token');
curl_exec($Vk);
preg_match('/<form method="post" action="([\w\W]+)">/U', curl_exec($Vk), $Url);
if(empty($Url[1])) {
curl_close($Vk);
return false;
}
curl_setopt($Vk, CURLOPT_URL, $Url[1]);
curl_setopt($Vk, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($Vk, CURLOPT_HTTPHEADER, array('Host' => 'login.vk.com'));
curl_setopt($Vk, CURLOPT_POST, true);
curl_exec($Vk);
$Url = parse_url(curl_getinfo($Vk, CURLINFO_EFFECTIVE_URL));
parse_str($Url['fragment'], $Url);
curl_close($Vk);
if(array_key_exists('access_token', $Url)) {
self::$User = $Url;
self::$IsAuth = true;
return true;
}
return false;
}
/**
Function - Возвращает массив [access_token, expires_in, user_id]
Или одну из указанных ячеек.
string $Key - Ключ ячейки из массива [access_token, expires_in, user_id] или вернет все сразу
return Array\string
**/
public static function User($Key = null) {
return ($Key === null) ? self::$User : self::$User[$Key];
}
/**
Function - Устанавливает UserAgent запроса, либо получает
RETURN Void\String
**/
public static function UserAgent($UserAgent = null) {
if($UserAgent === null)
return self::$USERAGENT;
else
self::$USERAGENT = $UserAgent;
}
/**
Function - Устанавливает клиент авторизации, либо получает
RETURN Void\String
**/
public static function Client_Id($client_id = null) {
if($client_id === null)
return self::$client_id;
else
self::$client_id = $client_id;
}
/**
Function - Устанавливает куки запроса, либо получает
RETURN Void\String
**/
public static function FileCookie($FileCookie = null) {
if($FileCookie === null)
return self::$FileCOOKIE;
else
self::$FileCOOKIE = $FileCookie;
}
/**
Function - Проверят, авторизован ли пользователь
RETURN BOOL
**/
public static function IsAuth() {
return self::$IsAuth;
}
}