Bonsoir,
Je souhaite utiliser l'API REST LinkedIn pour collecter des informations auprès de personnes telles que le nom de l'e-mail, l'expérience ...
Je travaille avec Ionic 3 est basé sur 4 angulaire
Avec les instructions dans cette page

https: / /developer.linkedin.com/docs/rest-api 

ne donne aucun résultat
Et avec cette page https://www.myprogrammingtutorials.com/linkedin-api-using-php-get-users-data.html
il me donne une erreur de jeton d'accès
Merci d'avance si vous avez des suggestions ...! ??

16 réponses


Huggy
Réponse acceptée

reste a trouver des id, il semble que la politique de linkedin aie changé
si tu as des infos ...

chuk
Auteur

any help plz

Utilises tu la clé d'authentification (token) qu'ils t'ont donné dans tes requêtes ajax?

Je suppose que c'est de la que vient le problème :)

chuk
Auteur

voici le code que j'utilise
//search_link.php

<!DOCTYPE html>
<html>
<head>
     <title>search</title>
</head>
<body>
<form method="get" action="result_link.php">
     <input type="text" name="code">
     <input type="submit" name="">

</form>
</body>
</html>

//result_link.php


if(isset($_GET['code'])){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"https://www.linkedin.com/oauth/v2/accessToken");
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS,"grant_type=authorization_code&code=".$_GET['code']."&redirect_uri=http://localhost:80/linkedin_search/result_link.php&client_id={ID_CLIENT}&client_secret={SECRET_CLIENT}");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $server_output = curl_exec ($ch);
    curl_close ($ch);
}

if(isset($_GET['code']) && json_decode($server_output)->access_token != ''){

     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL,"https://api.linkedin.com/v1/people/~?oauth2_access_token=".json_decode($server_output)->access_token."&format=json");
     curl_setopt($ch, CURLOPT_POST, 0);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     $server_output2 = curl_exec ($ch);
     curl_close ($ch);

     $user_data = json_decode($server_output2);

     print_r($user_data);

}
?>

D'après le Step3 de la doc et qui concerne l'échange du code contre un token "...v2/accessToken"
la méthode devrait être POST

chuk
Auteur

je veux pas poster qlq j'aimerais recupurer les information s des gens a partir d' un mot clé donné

Oui oui on est d'accord
essaye de mettre POST à true

    curl_setopt($ch, CURLOPT_URL,"https://www.linkedin.com/oauth/v2/accessToken");
    curl_setopt($ch, CURLOPT_POST, true);
    ...
chuk
Auteur

Bonjour , @huggy merci pour ton aide
j'ai changée post en true mais toujours la meme erreur

Notice: Undefined property: stdClass::$access_token in D:\xampp\htdocs\linkedin_search\result_link.php on line 44

Oui le pb vient de la première requête curl qui bloque
juste après le 1er curl_exec il faut afficher l'erreur curl

 $server_output = curl_exec ($ch);
echo curl_error($ch);

il est probable que ça vienne du https si ton php est mal configuré

pour configurer le php
il faut commencer par télécharger la liste des Autorités de Certification de Mozilla ici
ensuite il faut copier ce fichier cacert.pem dans /wamp64 et dans le phpForApache.ini (ou php.ini si tu n'as qu'une seule version de php)
dans la rubrique openssl

openssl.cafile=c:\wamp64\cacert.pem

Pour l'appel Curl on peut rajouter

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,'0');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,'1');
chuk
Auteur

bonjour , merci
ila un changement

{"error":"invalid_request","error_description":"Unable to retrieve access token: appid/redirect uri/code verifier does not match authorization code. Or authorization code expired. Or external member binding exists"}

l'url de callback doit être une de celles que tu as paramétrées dans ton appli linkedin (la page pour dévelopeurs)
Autre chose : l'url doit être urlencodée c-a-dire remplace :// par %3a%2f%2f

Tu as bien obtenu ton code d'autorisation par l'api suivant

<a href="https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URL}&state=987654321&scope=r_basicprofile">Register With LinkedIn</a>

comme dans ton tuto ?

chuk
Auteur

ca donne

https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id={CLIENT_ID}&redirect_uri=http://localhost/linkedin_search/result_link.php&state=987654321&scope=r_basicprofile
{"access_token":"AQU7Anm46_Tl5LrXuoFolsD20wzRtsU7m1Ay766StOlb4ukb8WIKh20pHKW9A09CL_L5sx9V2wYFFHJjIhIm59pQcOH2SdV7RTB5ECfmLLNXHVFHZrNcHP6hTXT4Y8gV-XG3O-ivlcTo1WLVTPWyw2F5KWF3wukG1FEL14jw3JYTgDxpyy_zftF_8OL5Z-KZ4GQQaFEZwed4l8gYd6eJkLP8HVbz74Ty6QR6u2FvbAyebSHovvOH4T3AMdEsmDpovMtBcj3sfseLpA8kWqLX-auNpwiO7rhy2R67Z3yaNpGaAAWYwTBJYosP_bzw1YIBed07tv1OyW7dCmfl2vnr2KRh_gscWA","expires_in":5183999}

C'est bon alors ? tu as ton token
reste plus qu'a récupérer les données de profil
le tilde correpond au user courant, si tu veux un autre profil (je suppose) il faut remplacer le tilde par l'id du profil que tu veux récuperer

chuk
Auteur

ouii merci bien @huggy