как зделать авторизацию вконтакте?

Discussion in 'PHP' started by tonnyripper, 25 Mar 2012.

  1. tonnyripper

    tonnyripper New Member

    Joined:
    25 Mar 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    через id и auth_key на php
     
    #1 tonnyripper, 25 Mar 2012
    Last edited: 25 Mar 2012
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    vk.com/developers
     
  3. daniel777

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

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Вот старая авторизация, скорее всего не работает:
    PHP:
    <?php

    $mail
    =''//e-mail или логин от контакта
    $pass=''//пароль от контакта

    $res=file_get_contents('http://vkontakte.ru/login.php?layout=iphone&app=8&url=%2F%3Fact%3Dauth');
    preg_match("/app_hash\" value=\"(.*?)\"/"$res$app_hash);

    $res=file_get_contents('http://login.vk.com/?act=login&expire=1&app=8&app_hash='.$app_hash[1].'&vk=&auth_url=http%3A%2F%2Fi.vkontakte.ru%2F%3Fact%3Dauth&captcha_sid=&email='.urlencode($mail).'&pass='.urlencode($pass).'&captcha_key=&permanent=');
    preg_match("/value=\'(.*?)\'/",$res,$sid);
    preg_match("/app_hash\" value=\"(.*?)\"/"$res$app_hash);

    $ch=curl_init("http://vkontakte.ru/login.php");
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS"s=$sid[1]&act=auth_result&m=4&permanent=&expire=1&app=8&app_hash=$app_hash[1]");
    curl_setopt($chCURLOPT_COOKIE,"remixsid=$sid[1]");

    $res=curl_exec($ch); 
    curl_close($ch);

    preg_match("/mid\":([0-9]+),\"sid\":\"(.*?)\",\"secret\":\"(.*?)\",\"expire\":([0-9]+),\"auth_hash\":\"(.*?)\"/",$res,$string);


    //теперь шлем запрос на апи. 
    $res=file_get_contents('http://api.vkontakte.ru/api.php?api_id=8&method=pages.getTitles&gid=100500&v=3.0&sig='.md5($string[1].'api_id=8gid=100500method=pages.getTitlesv=3.0'.$string[3]).'&sid='.$string[2]);

    ?>
     
  4. tonnyripper

    tonnyripper New Member

    Joined:
    25 Mar 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    мне надо что бы было поле вода айди и аутхкей
     
  5. love-in-hell

    love-in-hell New Member

    Joined:
    16 Sep 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Да, тема актуальна...
    Делаю так:

    PHP:
            preg_match('#app_hash" value="(.*)"#Uis',$html,$app_hash);
            
    preg_match('#ip_h" value="(.*)"#Uis',$html,$ip_h);
            
            
    $html curl('https://login.vk.com/',array(
                
    "act"=>"login",
                
    "expire"=>"1",
                
    "app"=>8,
                
    "app_hash"=>$app_hash[1],
    "al_test"    =>    7,
    "_origin"    =>    "",
    "ip_h"        =>    $app_hash[1],
    "email"        =>    "",
    "pass"        =>    "",
    "permanent"    =>    1,

                ));
            if(
    preg_match("#Location:(.*)Vary:#Uis",$html['header'],$send)){
                
    $result curl(str_replace('\n',"",trim($send[1])));
    ... авторизация проходит, но не могу отловить миды и прочую херню.
    Подскажите как решили вопрос?
     
  6. love-in-hell

    love-in-hell New Member

    Joined:
    16 Sep 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    толку от античата похоже вообще не стало...
    пишу, что камнем в воздух, - ноль эмоций...
    с такими темпами скоро путевых разработчиков не станет, все будут сидеть без опенсосев закрысив код и покупать друг у друга кусочки...
     
  7. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    вы асолютно неправы, античатовцы тоже люди и тоже не могут знать всё, вопрос из тех что задал ТС не имет ответа в одно предложение, то что надо автору стоит немало личного времени и усилий, так что пусть или ждёт пока не придёт тот кто раньше интиресовался этим вопросом и не выложит код или нанимает кодера.
     
  8. love-in-hell

    love-in-hell New Member

    Joined:
    16 Sep 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Да и не нужно знать всё...
    Вопрос входа в vk - это не чтение ассемблеровского кода.
    Я дам всем готовый код, объясните только как отловить $auth->mid
    $auth->secret
    $auth->sid
    через web app 8

    Раньше он редиректил и можно было поймать всё это в onDone, а теперь нажимаешь вход и тупо прелоад идет и всё. Вход как бы выполнен, 200 OK приходит в заголовке и можно зайти на главную, а секрета мида и сида нет. Где они?
     
  9. love-in-hell

    love-in-hell New Member

    Joined:
    16 Sep 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    У меня раньше был код, аналогичный daniel777, а теперь не могу разобраться с этим долбаным секретом.
     
  10. love-in-hell

    love-in-hell New Member

    Joined:
    16 Sep 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Начал разбирать по запчастям:

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    и агент iphone нужен...
    Вот и всё.

    Может кому пригодится, - я не быдло инфы не жалко)
     
  11. daniel777

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

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    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='.$pass);

    $res=curl_exec($ch);
    curl_close($ch);

    preg_match_all("/Set-Cookie: (.*?);/"$res$cookie);

    print_r($cookie);

    ?>
    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);

    ?>