На просторах сети нашел PHP код для авторизации на сайте Вконтакте. Код рабочий, немного допилил, но сделать запросы к API соц. сети не получается.
Смысл работы скрипта в следующем.
1. Создаем Standalone приложение. (у меня создано, ID приложения и Защищенный ключ уже есть в коде)
2. Авторизация происходит по логину и паролю от Вконтакте. (свои данные удалил ;)))))
3. Отрабатывая скрипт выдаёт: access_token, expires_in, user_id, email, secret
access_token - постоянный, т.к. expires_in = 0
Вопрос: Как имея эти данные, обратится к API Вконтакте?
Код:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- //Как получить токен ВКонтакте
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'Http.php';
- function mPrint($st){
- echo("<pre>");
- echo("</pre>");
- }
- $http= new HttpTools();
- $login = "Ваш логин в Вконтакте";
- $password = "Ваш пароль от Вконтакте";
- //Id приложения
- $client_id = "4559692";
- $secret_key = '2PjdTT7RNcCgAMjs8jPG';
- //Необходимые приложению права
- $scope = "notify,friends,photos,audio,video,docs,notes,pages,status,offers,questions,wall,groups,mail,messages,notifications,stats,ads,offline,nohttps";
- //Первый запрос
- $url = 'https://oauth.vk.com/authorize?';
- $url .= 'client_id=' . $client_id;
- $url .= '&scope=' . $scope;
- $url .= '&redirect_uri=http://oauth.vk.com/blank.html';
- $url .= '&display=mobile';
- $url .= '&v=5.24';
- $url .= '&response_type=token';
- $url .= '&revoke=1';
- mPrint("Send GET request 1: ".$url);
- $html = $http->sendGetRequest($url, '', false);
- $_origin = $http->parseParam($html, '<input type="hidden" name="_origin" value="','">');
- $ip_h = $http->parseParam($html, '<input type="hidden" name="ip_h" value="','" />');
- $to = $http->parseParam($html, '<input type="hidden" name="to" value="','">');
- //Второй запрос
- $url2 = 'https://login.vk.com/?act=login&soft=1&utf8=1';
- $url2 .= '&ip_h=' . $ip_h;
- $url2 .= '&to=' . $to;
- $url2 .= '&_origin=' . $_origin;
- $url2 .= '&email=' . $login;
- $url2 .= '&pass=' . $password;
- mPrint("Send POST request 2: ".$url2);
- //Третий запрос
- $cookies1 = $http->getPageCookies($headers);
- $headers = $http->formatHeadersArray($headers);
- $location = @$headers['Location'];
- mPrint("Send GET request 3: ".$location);
- $confirmUrl = $http->parseParam($html, '<form method="post" action="','">');
- $cookies = $http->getPageCookies($headers);
- $http->setCookie('remixsid='.$cookies['remixsid'].';remixlang=3'.';s='.$cookies1['s'].';l='.$cookies1['l'].';p='.$cookies1['p'].';h='.$cookies1['h']);
- mPrint("Send POST request 4: ".$confirmUrl);
- $headers = $http->formatHeadersArray($headers);
- $token = $http->parseParam($location, 'https://oauth.vk.com/blank.html#access_token=','&expires_in');
- mPrint("access_token: ".$token);
- $expires_in = $http->parseParam($location, 'expires_in=','&user_id');
- mPrint("expires_in: ".$expires_in);
- $user_id = $http->parseParam($location, 'user_id=','&email');
- mPrint("user_id: ".$user_id);
- $email = $http->parseParam($location, 'email=','&secret');
- mPrint("email: ".$email);
- $secret = $http->parseParam($location, 'secret=','');
- mPrint("secret: ".$secret);
- /*==============================*
- | Ниже этой строчки не работает |
- *==============================*/
- //Запрос users.get
- $url3 = '/method/users.get?';
- $url3 .= 'uid=' . $user_id;
- $url3 .= '&v=5.24';
- $url3 .= '&access_token=' . $token;
- mPrint("url3 + secret: ".$url3."<b>".$secret."</b>");
- $url3 .= '&sig=' . $Sig;
- mPrint("Send GET request users.get: ".$url3);
- $html2 = $http->sendGetRequest("https://api.vk.com".$url3, '', false);
- mPrint($html2);
- /*================================*
- | Скрипт выводит следующие данные |
- *================================*/
- // Send GET request 1: https://oauth.vk.com/authorize?client_id=4559692&scope=notify,friends,photos,audio,video,docs,notes,pages,status,offers,questions,wall,groups,mail,messages,notifications,stats,ads,offline,nohttps&redirect_uri=http://oauth.vk.com/blank.html&display=mobile&v=5.24&response_type=token&revoke=1
- // Send POST request 2: https://login.vk.com/?act=login&soft=1&utf8=1&ip_h=2db93bac25f80608f0&to=aHR0cHM6Ly9vYXV0aC52ay5jb20vYXV0aG9yaXplP2NsaWVudF9pZD00NTU5NjkyJnJlZGlyZWN0X3VyaT1odHRwJTNBJTJGJTJGb2F1dGgudmsuY29tJTJGYmxhbmsuaHRtbCZyZXNwb25zZV90eXBlPXRva2VuJnNjb3BlPTIwNzk5OTkmdj01LjI0JnN0YXRlPSZyZXZva2U9MSZub2h0dHBzPTEmZGlzcGxheT1tb2JpbGU-&_origin=https://oauth.vk.com&email=?????@yandex.ru&pass=*********
- // Send GET request 3: https://oauth.vk.com/authorize?client_id=4559692&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&response_type=token&scope=2079999&v=5.24&state=&revoke=1&nohttps=1&display=mobile&__q_hash=640da9d4180222f9a56ba98e5b56b1c3
- // Send POST request 4: https://login.vk.com/?act=grant_access&client_id=4559692&settings=2079999&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&response_type=token&direct_hash=0fe500e8c4829c2707&token_type=1&v=5.24&state=&display=mobile&ip_h=2db93bac25f80608f0&hash=1b3da1a03dd035d244&https=1
- // token: 5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd
- // expires_in: 0
- // user_id: 223???049
- // email: ?????@yandex.ru
- // secret: 993e25be49d1daaea7
- // url3 + secret: /method/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd993e25be49d1daaea7
- // Send GET request users.get: /method/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd&sig=7962ad18fb3c7bfba8000edbc7e7f474
- // {"error":{"error_code":5,"error_msg":"User authorization failed: sig param is incorrect, sig=md5('\/method\/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd'+SECRET)","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"users.get"},{"key":"uid","value":"223675049"},{"key":"v","value":"5.24"},{"key":"access_token","value":"5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd"},{"key":"sig","value":"7962ad18fb3c7bfba8000edbc7e7f474"}]}}
- ?>