ccc

Linkedin: Obtener todos los datos de un perfil

Primero registrar una nueva APP en la API de Linkedin:
https://developer.linkedin.com

<?php
define('API_KEY','xxx');
define('API_SECRET','xxx');
define('REDIRECT_URI', $redirectURI); // puede ser localhost
define('SCOPE',  'r_basicprofile r_emailaddress rw_company_admin w_share');

session_name('linkedin');
session_start();

if (isset($_GET['error'])) {
    print $_GET['error'] . ': ' . $_GET['error_description'];
    exit;
} elseif (isset($_GET['code'])) {
    if ($_SESSION['state'] == $_GET['state']) {
        getAccessToken();
    } else {
        exit;
    }
} else {
    if ((empty($_SESSION['expires_at'])) || (time() > $_SESSION['expires_at'])) {
        $_SESSION = array();
    }
    if (empty($_SESSION['access_token'])) {
        getAuthorizationCode();
    }
}

$user = fetch('GET', '/v1/people/~:(id,firstName,lastName,skills,educations,pictureUrl,relationToViewer,positions,headline,location,industry,email-address,network)');
?>

El javascript:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<form id="form_reg_linkedin" name="form_reg_linkedin" action="<?=$rutaReg;?>" method="POST">
    <input type="hidden" name="nombre_completo" value="<?=$user->firstName;?> <?=$user->lastName;?>">
    <input type="hidden" name="email" value="<?=$user->emailAddress;?>">
    <?php
    require("../../config/cnnAux.php");
    $codPais = strtolower($user->location->country->code);
    $sql = "select * from paises where cod_pais = '".$codPais."'";
    $regPais = $app['db']->fetchAll($sql, array(
    ));
 
 
    $id_pais = 0;
    if (count($regPais) > 0)
        $id_pais = $regPais[0]["id"];
 
    $cp = "";
    if ($id_pais == 73) // España
        $cp = "28033";
 
 
    $azar = rand(1,999);
    $username = substr($user->firstName, 0,4)."_".substr($user->lastName, 0,4)."_".$azar;
    // Generar contraseña aleatoria
    $cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
    $longitudCadena = strlen($cadena);
    $pass = "";
    $longitudPW = 10;
 
    for($i=1 ; $i<=$longitudPW ; $i++){
       $pos=rand(0,$longitudCadena-1);
       $pass .= substr($cadena,$pos,1);
    }
 
    $pos1 = strpos($user->location->name, " ");
    $ciudad = substr($user->location->name, 0, $pos1);
    ?>
    <input type="hidden" name="esRegLinkedin" value="1">
    <input type="hidden" name="id_pais" value="<?=$id_pais?>">
    <input type="hidden" name="otra_ciudad" value="<?=$ciudad?>">
    <input type="hidden" name="fecha_nacimiento" value="31/12/1977">
    <input type="hidden" name="nif" value="2222">
    <input type="hidden" name="cp" value="<?=$cp;?>">
    <input type="hidden" name="username" value="<?=$username;?>">
    <input type="hidden" name="pw1" value="<?=$pass;?>">
</form>

<script>
    $(function() {
       // alert("Enviar form");
       $("#form_reg_linkedin").submit();
    });
</script>

Funciones de PHP: <?php
exit;

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

    $url = 'https://www.linkedin.com/uas/oauth2/authorization?' . http_build_query($params);
    $_SESSION['state'] = $params['state'];
    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,
    );
     $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' . http_build_query($params);

    $context = stream_context_create(
        array('http' =>
            array('method' => 'POST',
            )
        )
    );

    $response = file_get_contents($url, false, $context);

    $token = json_decode($response);

    $_SESSION['access_token'] = $token->access_token;
    $_SESSION['expires_in']   = $token->expires_in;
    $_SESSION['expires_at']   = time() + $_SESSION['expires_in'];
   
    return true;
}

function fetch($method, $resource, $body = '') {
    // print $_SESSION['access_token'];

    $opts = array(
        'http'=>array(
            'method' => $method,
            'header' => "Authorization: Bearer " . $_SESSION['access_token'] . "\r\n" . "x-li-format: json\r\n"
        )
    );

    $url = 'https://api.linkedin.com' . $resource;
 

    // if (count($params)) { $url .= '?' . http_build_query($params); }


    $context = stream_context_create($opts);

    $response = file_get_contents($url, false, $context);

    return json_decode($response);
}

?>

No hay comentarios:

Publicar un comentario