Здравствуйте. Помогите пожалуйста написать скрипт авторизации Вконтакте на ПХП. В ПХП я новичек (работал раньше с делфи), но этот скрип ОЧЕНЬ нужен. Вот то что написал я, но он не паше, нужно кукисы наверное подставлять: PHP: <?php $url = 'http://m.vk.com/'; $ne = file_get_contents($url); $nb = substr($ne, 0, strpos($ne, '<form method="post" action="') + 28); $ne = str_replace($nb, '', $ne); $ne = str_replace('">', '', $ne); $string = strpos($ne, '&utf8=1')+7; $string = substr($ne,5,$string); echo "ssl$string"; $fp = fsockopen("ssl$string", 433, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $var1 = 'mail'; $var2 = 'pass'; $string = substr($ne,strpos($ne, '?'),$string); $data = urlencode('email') . '=' . urlencode($var1) . '&' . urlencode('pass') . '=' . urlencode($var2) . "\r\n"; $out = "POST $string HTTP/1.1\r\n"; $out .= "Host: login.vk.com\r\n"; $out .= "application/x-www-form-urlencoded\r\n"; $out .= "Content-length: ".strlen($data)."\r\n"; $out .= "Connection: Close\r\n\r\n"; $out .= $data."\r\n\r\n"; $html = ''; fwrite($fp, $out); while (!feof($fp)) { $html .= fgets($fp, 128); } fclose($fp); $pos = strpos($html, "\r\n\r\n"); echo $html = substr($html, $pos+4); } ?> Очень прошу помочь, или может у кого то есть уже готовый скрипт, буду благодарен. Заранее спасибо
какой-то из них рабочий http://cashsite.ru/phpcurl-avtorizatsiya-vkontakte.php http://rche.ru/1143_obnovlennaya-avtorizaciya-vkontakte-php-curl.html не мое, просто кому-то уже скидывал месяца два назад и работало.
Из массива $cookie берём remixid и работаем с ним дальше: PHP: <?php $mail=''; //E-mail $pass=''; //Пароль $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://login.vk.com/?act=login'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'FIREFOX'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, 'act=login&q=1&al_frame=1&expire=&captcha_sid=&captcha_key=&from_host=vk.com&from_protocol=http&ip_h='.md5($_SERVER[REMOTE_ADDR]).'&email='.$mail.'&pass='.$p ass); $res=curl_exec($ch); curl_close($ch); preg_match_all("/Set-Cookie: (.*?);/", $res, $cookie); print_r($cookie); ?> Авторизация через Oauth: PHP: <?php $mail=''; //E-mail $pass=''; //Пароль $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='.$mail.'&password='.$pass); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); echo curl_exec($ch); curl_close($ch); ?>
ребята у контакта есть готовое php api . готовый класс который можно скачать и пользоватся всеми функциями которые доступны для api. почему тут так любят изобретать велосипеды ?
А что мешает тогда пойти и разобраться в этом api? _ttps://vk.com/dev/methods - списки методов _ttps://vk.com/dev/wall.get - Возвращает список записей со стены пользователя или сообщества. (пойдет для парсинга) _ttps://vk.com/dev/wall.post - Публикует новую запись на своей или чужой стене. (пойдет для постинга) для самых ленивых! PHP: $mail=''; //E-mail $pass=''; //пароль $url_auth='https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='.$mail.'&password='.$pass; function curl($url='', $post='', $referer='', $proxy='') { $cl = curl_init(); curl_setopt($cl, CURLOPT_URL, $url); curl_setopt($cl, CURLOPT_RETURNTRANSFER,1); curl_setopt($cl, CURLOPT_HEADER, 0); curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($cl, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10'); #curl_setopt($cl, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($cl, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); curl_setopt($cl, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); if(!empty($post)) { curl_setopt($cl, CURLOPT_POST, 1); curl_setopt($cl, CURLOPT_POSTFIELDS, $post);} else{ curl_setopt($cl, CURLOPT_POST, 0);} if(!empty($referer)){ curl_setopt($cl, CURLOPT_REFERER, $referer);} else{ curl_setopt($cl,CURLOPT_REFERER, 1);} if(!empty($proxy)) { curl_setopt($cl, CURLOPT_PROXY, $proxy);} $ex=curl_exec($cl); #$ex=iconv('cp1251','UTF8',$ex); curl_close($cl); return $ex; } $content=curl($url_auth,'','',''); #функция декодирования масива JSON $json=json_decode($content, true); if(isset($json[error_description])){ print $json[error_description]."<br>"; }else { print "access_token: ".$json[access_token]."<br>"; $url_p="https://api.vk.com/method/users.get?user_id=".$json[user_id]."&v=5.21&access_token=".$json[access_token]; $res=curl($url_p,'','',''); $json_auth=json_decode($res, true); print "<font color='blue'><b>"; print "user_id: ".$json_auth[response][0][id]."<br>"; print "Имя: ".$json_auth[response][0][first_name]."<br>"; print "Фамилия: ".$json_auth[response][0][last_name]."<br>"; print "</b></font>"; }