Автоматизация Linkedin oAuth usin Curl и PHP

Я пытаюсь автоматизировать процесс аутентификации входа в LinkedIn, чтобы выполнить публичный поиск людей в LinkedIn.

Сначала я попытаюсь объяснить, что я делаю.

Я использую четыре файла:

  • oAuth.php (обязательно)
  • linkedin.php (библиотека php LinkedIn)
  • auth.php (который получает токен OAuth из файла libedIn)
  • callback url demo.php?params (который после успешного аутентификации печатает профиль текущего пользователя и результаты поиска с использованием параметров)

Аутентификационный URL-адрес – https://api.linkedin.com/uas/oauth/authorize?oauth_token=$oauthtoken .

Я сделал две вещи, и, похоже, не работает; они есть:

  1. Я использую завиток, чтобы автоматизировать процесс перехода на URL-адрес аутентификации, размещение полей (имя пользователя, пароль, токен oauth, csrfToken, продолжительность, sourceAlias ​​и т. Д., Которые я узнал из Firebug).

    Единственные две вещи, которые меняются здесь: oauth token и csrfToken (путем разбора содержимого в URL-адресе аутентификации). Я смог получить оба, каждый раз, когда загружается страница, и, наконец, пытается напечатать ответ GET от curl_exec.

  2. Попытка опубликовать только адрес электронной почты и пароль и попытаться распечатать ответ GET.

Для справки здесь мой auth.php :

 function extract_unit($string, $start, $end) { $pos = stripos($string, $start); $str = substr($string, $pos); $str_two = substr($str, strlen($start)); $second_pos = stripos($str_two, $end); $str_three = substr($str_two, 0, $second_pos); $unit = trim($str_three); // remove whitespaces return $unit; } session_start(); $config['base_url'] = 'http://linkedin.tweetrank.tk/auth.php'; $config['callback_url'] = 'http://linkedin.tweetrank.tk/demo.php'; $config['linkedin_access'] = 'my key'; $config['linkedin_secret'] = 'my secret'; include_once "linkedin.php"; # First step is to initialize with the consumer key and secret. We'll use # an out-of-band oauth_callback $linkedin = new LinkedIn($config['linkedin_access'], $config['linkedin_secret'], $config['callback_url']); //$linkedin->debug = true; # Now we retrieve a request token. It will be set as $linkedin->request_token $linkedin->getRequestToken(); $_SESSION['requestToken'] = serialize($linkedin->request_token); # With a request token in hand, we can generate an authorization URL, which # we'll direct the user to //echo "Authorization URL: " . $linkedin->generateAuthorizeUrl() . "\n\n"; echo $url = $linkedin->generateAuthorizeUrl(); $token = $linkedin->generateAuthorizeToken(); //echo '<br><br>'; $data = file_get_contents($url); $csrfToken = extract_unit($data,'name="csrfToken" value="','"'); //echo $csrfToken; //echo $token; //echo 'https://www.linkedin.com/uas/oauth/authenticate?oauth_token='.$token.'&amp;trk=uas-continue'; // INIT CURL $postParams = 'email=myemail&password=mypassword&duration=720&authorize=Ok%2C+I%27ll+Allow+It&extra=&access=-3&agree=true&oauth_token='.$token.'&appId=&csrfToken='.$csrfToken.'&sourceAlias=0_8L1usXMS_e_-SfuxXa1idxJ207ESR8hAXKfus4aDeAk'; 

Теперь я использовал URL аутентификации и postParams с curl.

Чтобы пройти процедуру входа в систему, нужно использовать шаг авторизации веб-страницы linkedIn; Ни в коем случае у нас не может быть стороннее приложение, принимающее учетные данные и связанное с авторизацией со ссылкой https://api.linkedin.com/uas/oauth/authorize?oauth_token=$oauthtoken

Я думаю, что понимаю, что вы спрашиваете, а ответ – нет, вы не можете сделать это с помощью LinkedIn. Недавно я столкнулся с подобной проблемой и не смог ее решить. Я думаю, ребята LinkedIn хорошо разбираются в защите данных и других вещах. Проверьте это: http://developer.linkedin.com/message/6460 http://getsatisfaction.com/linkedin/topics/cant_use_linkedin_api_to_view_public_profiles_without_oauth_login