2010-11-16 5 views
1

Я пытаюсь автоматизировать процесс аутентификации входа в 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.

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

  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 с завитком.

ответ

0

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

2

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

Смежные вопросы