Foros del Web » Programando para Internet » PHP »

API Linkedin: obtener r_fullprofile

Estas en el tema de API Linkedin: obtener r_fullprofile en el foro de PHP en Foros del Web. Hola a todos: He visto que desde hace unas semanas ha cambiado la API de LInkedin y ya cuando creas una aplicación no te permite ...
  #1 (permalink)  
Antiguo 11/06/2015, 03:15
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
API Linkedin: obtener r_fullprofile

Hola a todos:

He visto que desde hace unas semanas ha cambiado la API de LInkedin y ya cuando creas una aplicación no te permite acceder a todos los datos de ese usuario mediante el scope de r_fullprofile.

He leído en la documentación de https://developer.linkedin.com/docs/fields/full-profile lo siguiente:

To access any of the following full profile fields, your app must request the r_fullprofile member permission.

He estado buscando por todas partes cómo obtener esos permisos de miembro pero no encuentro nada, ¿alguién más se ha encontrado con este problema en las últimas semanas? ¿Alguien ha encontrado alguna solución?

Muchas gracias. Saludos
  #2 (permalink)  
Antiguo 29/06/2015, 08:10
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Respuesta: API Linkedin: obtener r_fullprofile

Refloto este tema para ver si alguien ha podido encontrar alguna solución.

He probado varias maneras pero no consigo obtener el r_fullprofile. Con este código me obtiene solo los datos básicos y si en el scope le pongo r_fullprofile me da error. Os copio el código por si alguien se le ocurre alguna posible solución:

Código:
<?php
define('API_KEY','xxxxx');
define('API_SECRET','xxxx');
define('REDIRECT_URI', 'http://midominio.com/pruebaLinkedin.php');
session_name('linkedin');
session_start();
 
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
		$resultado = getAccessToken();
		if ($resultado)
			echo "Obtenido bien el Access Token<br>";
		else
			echo "Error al obtener el Access Token<br>";
    } 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','/v1/people/~:(id,first-name,skills,educations,languages,twitter-accounts)?format=json');
echo "<pre>";
print_r($user);
echo "</pre>";
exit;
 
 
// *********************************************************
function getAuthorizationCode() {
	echo "entra en getAuthorizationCode<hr>";
    $params = array(
        'response_type' => 'code',
        'client_id' => API_KEY,
        /*'scope' => 'r_fullprofile',*/
        '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() {
	echo date('Y-m-d H:i:s')." entra en getAccessToken<hr>";
    $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
	echo "<hr>";
	
    $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 = '') {
	echo date('Y-m-d H:i:s')." entra en fetch<hr>";
	
	
    // print $_SESSION['access_token'];
 
    $opts = array(
        'http'=>array(
            'method' => $method,
            'header' => "Authorization: Bearer " . $_SESSION['access_token'] . "\r\n" . "x-li-format: json\r\n"
        )
    );
 
    // Need to use HTTPS
    $url = 'https://api.linkedin.com' . $resource;
	
	
 
    // Append query parameters (if there are any)
    if (count($params)) { $url .= '?' . http_build_query($params); }
 
    // Tell streams to make a (GET, POST, PUT, or DELETE) request
    // And use OAuth 2 access token as Authorization
    $context = stream_context_create($opts);
 
	///echo "FETCH:".$url." con los parametros ".$context;
	$rutaTotal = $url."&oauth2_access_token=".$_SESSION['access_token'];
	echo "<br><br>FETCH:".$rutaTotal;
	$response = file_get_contents($rutaTotal);
	echo "<br><br>RESPUESTA:".$response;
	exit;
    // Hocus Pocus
    // $response = file_get_contents($url, false, $context);
 
    // Native PHP object, please
    return json_decode($response);
}
 

?>
  #3 (permalink)  
Antiguo 29/06/2015, 13:52
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: API Linkedin: obtener r_fullprofile

Revisa la documentación oficial:

- Puedes requerir los permisos al usuario: https://developer.linkedin.com/docs/oauth2#authorize
- O asignarlos en la configuración de tu aplicación; no encontré un enlace de esto, porque se requiere tener una app registrada.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: api, linkedin
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:49.