Автоматизация Linkedin oAuth с использованием Curl и PHP - PullRequest
1 голос
/ 16 ноября 2010

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

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

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

  • 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.

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

  1. Я использую curl для автоматизации процесса перехода к URL-адресу аутентификации, публикации полей (имя пользователя, пароль, маркер oauth, csrfToken, duration, 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.

Ответы [ 2 ]

2 голосов
/ 13 сентября 2012

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

0 голосов
/ 31 мая 2011

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

...