Авторизация Вконтакте (PHP)

Discussion in 'PHP' started by bertys, 14 Mar 2013.

  1. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте.

    Помогите пожалуйста написать скрипт авторизации Вконтакте на ПХП. В ПХП я новичек (работал раньше с делфи), но этот скрип ОЧЕНЬ нужен.

    Вот то что написал я, но он не паше, нужно кукисы наверное подставлять:

    PHP:
    <?php
    $url 
    'http://m.vk.com/';
    $ne file_get_contents($url);

    $nb substr($ne0strpos($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$errstr30);
    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($fp128);
        }
        
    fclose($fp);
        
        
    $pos strpos($html"\r\n\r\n");
        echo 
    $html substr($html$pos+4);
    }


    ?> 
    Очень прошу помочь, или может у кого то есть уже готовый скрипт, буду благодарен.

    Заранее спасибо
     
  2. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    какой-то из них рабочий
    http://cashsite.ru/phpcurl-avtorizatsiya-vkontakte.php
    http://rche.ru/1143_obnovlennaya-avtorizaciya-vkontakte-php-curl.html

    не мое, просто кому-то уже скидывал месяца два назад и работало.
     
  3. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Из массива $cookie берём remixid и работаем с ним дальше:
    PHP:
    <?php

    $mail
    =''//E-mail
    $pass=''//Пароль

    $ch curl_init();
    curl_setopt($chCURLOPT_URL'https://login.vk.com/?act=login');
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_USERAGENT'FIREFOX');
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_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($chCURLOPT_URL

    'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='.$mail.'&password='.$pass);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
    echo 
    curl_exec($ch);
    curl_close($ch);

    ?>
     
  4. VANZEL

    VANZEL New Member

    Joined:
    11 May 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    -3
    Новая рабочая версия скрипта автоматической авторизации тут: http://kr45.ru/vk/
     
  5. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    135
    Reputations:
    4
    ребята у контакта есть готовое php api . готовый класс который можно скачать и пользоватся всеми функциями которые доступны для api. почему тут так любят изобретать велосипеды ?
     
    #5 barnaki, 30 Jun 2014
    Last edited: 30 Jun 2014
  6. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    909
    Reputations:
    863
    А что мешает тогда пойти и разобраться в этом 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($clCURLOPT_URL$url);
        
    curl_setopt($clCURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($clCURLOPT_HEADER0); 
        
    curl_setopt($clCURLOPT_SSL_VERIFYPEER0); 
        
    curl_setopt($clCURLOPT_SSL_VERIFYHOST0);
        
    curl_setopt($clCURLOPT_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($clCURLOPT_COOKIEJAR$_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
        
    curl_setopt($clCURLOPT_COOKIEFILE$_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
        if(!empty(
    $post)) {
       
    curl_setopt($clCURLOPT_POST1); 
       
       
    curl_setopt($clCURLOPT_POSTFIELDS$post);}
          else{
          
    curl_setopt($clCURLOPT_POST0);}
          
        if(!empty(
    $referer)){
          
    curl_setopt($clCURLOPT_REFERER$referer);}
          else{
          
    curl_setopt($cl,CURLOPT_REFERER1);}
          
        if(!empty(
    $proxy)) {
       
    curl_setopt($clCURLOPT_PROXY$proxy);}
       
        
    $ex=curl_exec($cl);
       
    #$ex=iconv('cp1251','UTF8',$ex);
        
    curl_close($cl);
            return 
    $ex;
    }

    $content=curl($url_auth,'','','');

    #функция декодирования масива JSON
    $json=json_decode($contenttrue);

    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($restrue);
            
                    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>";
        
    }
     
    _________________________
    #6 winstrool, 5 Jul 2014
    Last edited: 5 Jul 2014
  7. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    135
    Reputations:
    4
    А что мешает тогда пойти и разобраться в этом api?
    вот и я о том же