Я пытаюсь автоматизировать процесс аутентификации входа в LinkedIn, чтобы выполнять публичный поиск людей в LinkedIn.Автоматизация Linkedin oAuth usin Curl и PHP
Сначала я попытаюсь объяснить, что я делаю.
Я использую четыре файла:
oAuth.php
(требуется)linkedin.php
(PHP LinkedIn библиотека)auth.php
(который получает OAuth маркер из Lib файла LinkedIn)- обратного вызова URL
demo.php?params
(который после успешного аутентификации распечатывает профиль текущего пользователя и результаты поиска с использованием параметров)
Аутентификационный URL-адрес: https://api.linkedin.com/uas/oauth/authorize?oauth_token=$oauthtoken
.
Я сделал две вещи, ни одна из них не работает; они:
Я использую локон, чтобы автоматизировать процесс перехода к URL аутентификации, размещение полей (имя пользователя, пароль, токен OAuth, csrfToken, продолжительность, sourceAlias и т.д., которые я узнал от Firebug).
Единственные две вещи, которые меняются здесь: oauth token и csrfToken (путем разбора содержимого в URL-адресе аутентификации). Я смог получить оба, каждый раз, когда загружается страница, и, наконец, пытается напечатать ответ GET от curl_exec.
Попытка опубликовать только адрес электронной почты и пароль и попытаться распечатать ответ 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.'&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
с завитком.