2013-10-31 57 views
1

我使用这段代码访问LinkedIn API,它的工作原理非常完美,但它只获取名字,姓氏,标题和电子邮件等详细信息。LinkedIn API获得第一学位连接和公司名称,职位和行业?

我想获得用户的连接,公司名称,公司类型,公司大小,职位和行业。

如何通过LinkedIn API获取这些详细信息?

<?php 
// Change these 
define('API_KEY',  [api_key]); 
define('API_SECRET', [api_secret]); 
define('REDIRECT_URI', 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME']); 
define('SCOPE',  'r_fullprofile r_emailaddress rw_nus r_network'); 

// You'll probably use a database 
session_name('linkedin'); 
session_start(); 

// OAuth 2 Control Flow 
if (isset($_GET['error'])) { 
    // LinkedIn returned an error 
    print $_GET['error'] . ': ' . $_GET['error_description']; 
    exit; 
} elseif (isset($_GET['code'])) { 
    // User authorized your application 
    if ($_SESSION['state'] == $_GET['state']) { 
     // Get token so you can make API calls 
     getAccessToken(); 
    } else { 
     // CSRF attack? Or did you mix up your states? 
     exit; 
    } 
} else { 
    if ((empty($_SESSION['expires_at'])) || (time() > $_SESSION['expires_at'])) { 
     // Token has expired, clear the state 
     $_SESSION = array(); 
    } 
    if (empty($_SESSION['access_token'])) { 
     // Start authorization process 
     getAuthorizationCode(); 
    } 
} 
$user = fetch('GET', 'http://api.linkedin.com/v1/people/id=12345/connections'); 
print_r($user); 
$name = $user->firstName.' '.$user->lastName; 
$email = $user->emailAddress; 
$occupation = $user->headline; 
exit; 

function getAuthorizationCode() { 
    $params = array('response_type' => 'code', 
        'client_id' => API_KEY, 
        'scope' => SCOPE, 
        'state' => uniqid('', true), // unique long string 
        'redirect_uri' => REDIRECT_URI, 
      ); 

    // Authentication request 
    $url = 'https://www.linkedin.com/uas/oauth2/authorization?' . http_build_query($params); 

    // Needed to identify request when it returns to us 
    $_SESSION['state'] = $params['state']; 

    // Redirect user to authenticate 
    header("Location: $url"); 
    exit; 
} 

function getAccessToken() { 
    $params = array('grant_type' => 'authorization_code', 
        'client_id' => API_KEY, 
        'client_secret' => API_SECRET, 
        'code' => $_GET['code'], 
        'redirect_uri' => REDIRECT_URI, 
      ); 

    // Access Token request 
    $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' . http_build_query($params); 

    // Tell streams to make a POST request 
    $context = stream_context_create(
        array('http' => 
         array('method' => 'POST', 
         ) 
        ) 
       ); 

    // Retrieve access token information 
    $response = file_get_contents($url, false, $context); 

    // Native PHP object, please 
    $token = json_decode($response); 

    // Store access token and expiration time 
    $_SESSION['access_token'] = $token->access_token; // guard this! 
    $_SESSION['expires_in'] = $token->expires_in; // relative time (in seconds) 
    $_SESSION['expires_at'] = time() + $_SESSION['expires_in']; // absolute time 

    return true; 
} 

function fetch($method, $resource, $body = '') { 
    $params = array('oauth2_access_token' => $_SESSION['access_token'], 
        'format' => 'json', 
      ); 

    // Need to use HTTPS 
    //$url = 'https://api.linkedin.com' . $resource . '?' . http_build_query($params); 
    $url = $resource . '?' . http_build_query($params); 
    // Tell streams to make a (GET, POST, PUT, or DELETE) request 
    $context = stream_context_create(
        array('http' => 
         array('method' => $method, 
         ) 
        ) 
       ); 
    // Hocus Pocus 
    $response = file_get_contents($url, false, $context); 
    // Native PHP object, please 
    return json_decode($response); 
} 
?> 

回答

0

对于1度连接,您只能检索基本配置文件字段,您可以像这样使用。仅供参考http://developer.linkedin.com/documents/connections-api

$user = fetch('GET', 'http://api.linkedin.com/v1/people/~/connections: 
    (id,first-name,last-name,location:(name),picture-url)'); 
+0

什么是id = 12345中的“12345”? 我想要当前用户的公司信息和当前用户的第一级连接。我试试这个代码,它生成错误 – krutssss

+0

为当前用户连接,您可以使用http://api.linkedin.com/v1/people/~/connections: (id,名字,姓氏,位置:(name) ,图片网址和用户配置文件,您可以使用http://api.linkedin.com/v1/people/~/profile: (id,名字,姓氏,位置:(name),picture-url并为用户 –

+0

在代码中删除重复的网址“api.linkedin.com” –