PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WEBDEV 2024 → API LinkedIn: Récupérer le code dans l'adresse de la page
API LinkedIn: Récupérer le code dans l'adresse de la page
Started by BENOIT MIRAMBEAU, Nov., 18 2024 3:21 PM - 3 replies
Registered member
11 messages
Posted on November, 18 2024 - 3:21 PM
Bonjour,
Je dois me connecter à l'API de LinkedIn et pour cela la 1ère étape est de récupérer le code d'authentification qui permet ensuite de récupérer le token.

Je reçois bien le code d'authentification dans l'adresse de la page de retour de la façon suivante :
https://Site.com/SITE_WEB/FR/Page-Code-OAuth.awp…

Malheureusement je ne peux pas extraire ce code de l'adresse pour l'affecter à ma variable.
En effet PageParamètre(1) ne renvoie rien dans ce cas.

Auriez-vous une solution ?

Merci,

Benoît

--
Merci pour votre aide
Benoît
Registered member
1 message
Posted on November, 18 2024 - 4:49 PM
I think you should use this kind of API as I have used on one of my website that you can see here: https://srd-sassa-gov.co.za/
Registered member
507 messages
Posted on November, 19 2024 - 6:08 PM
BENOIT MIRAMBEAU a écrit :

En effet PageParamètre(1) ne renvoie rien dans ce cas.

Avec ton url c'est PageParamètre(2) qu'il faudrait utiliser
Message modified, November, 19 2024 - 6:09 PM
Registered member
11 messages
Posted on November, 20 2024 - 11:18 AM
Merci pour ta réponse,
Finalement j'ai utilisé ce code qui fonctionne très bien :
sParamètres est une chaîne
sURLEnCours est une chaîne
nIndice est un entier = 1

// Construit la liste des paramètres reçus
TANTQUE PageParamètre(nIndice) <> ""
sParamètres += ["&"] + PageParamètre(nIndice)
nIndice ++
FIN

// Construit l'URL de la page en cours
sURLEnCours = PageAdresse(MaPage, paComplète) + ["?"] + sParamètres
//info(sURLEnCours)

SAI_Code_OAuth = sURLEnCours//ExtraitChaîne(sURLEnCours,1,"?P1=&code=")
//SAI_Code_OAuth1 = ExtraitChaîne(SAI_Code_OAuth,2,"P1=",DepuisDébut)
SAI_Code_OAuth2 = ExtraitChaîne(SAI_Code_OAuth,2,"?code=",DepuisDébut)


Maintenant je reçois bien le Token mais par contre j'ai un souci pour publier le texte sur LinkedIn.

Que penses-tu du code que j'utilise et aurais-tu une solution, l'erreur renvoyée est la suivante :
Erreur lors de la publication : 422 - {"message":"ERROR :: /author :: \"urn:li:person:xxxxxxx\" does not match urn:li:company:\\d+|urn:li:member:\\d+\n","status":422}

// Paramètres d'accès et URL
ACCÈS_TOKEN est une chaîne = SAI_Token
URL_API est une chaîne = "https://api.linkedin.com/v2/ugcPosts"
IDClient est une chaîne = "xxxxxxxxxx" //ID de ma page linkedin perso

// Corps de la demande pour créer un partage de texte
oRequete est un Variant
oRequete = JSONVersVariant("{}")
oRequete.author = "urn:li:member:" + IDClient // Assurez-vous que c'est le bon format et l'ID correct
//oRequete.author = "urn:li:person:" + IDClient
oRequete.lifecycleState = "PUBLISHED"

// Contenu spécifique du partage
shareContent est un Variant
shareContent = JSONVersVariant("{}")
shareContent.shareCommentary = JSONVersVariant("{}")
shareContent.shareCommentary.text = "Ceci est un beau village de France"
shareContent.shareMediaCategory = "NONE" // Correctement défini sans conversion en JSON

// Ajouter le contenu spécifique à la requête
oRequete.specificContent = JSONVersVariant("{}")
oRequete.specificContent["com.linkedin.ugc.ShareContent"] = shareContent

// Définir la visibilité du post
oRequete.visibility = JSONVersVariant("{}")
oRequete.visibility["com.linkedin.ugc.MemberNetworkVisibility"] = "PUBLIC"

// Conversion de l'objet JSON en texte JSON
sRequeteJSON est une chaîne = VariantVersJSON(oRequete)

// Création de la requête HTTP
maRequête est un httpRequête
maRequête..URL = URL_API
maRequête..Méthode = httpPost
maRequête..ContentType = "application/json"
maRequête..Entête["Authorization"] = "Bearer " + ACCÈS_TOKEN
maRequête..Entête["X-Restli-Protocol-Version"] = "2.0.0"
maRequête..Contenu = sRequeteJSON
maRequête..Timeout = 20000 // Ajout d'un délai de timeout de 20 secondes

// Envoi de la requête et réception de la réponse
maRéponse est un httpRéponse = HTTPEnvoie(maRequête)

SI maRéponse..StatusCode = 201 ALORS
Info("Publication réussie !")
SINON
Info("Erreur lors de la publication : " + maRéponse..StatusCode + " - " + maRéponse..Contenu)
SAI_JOURNAL= maRéponse..StatusCode + maRéponse..Contenu
FIN


--
Merci pour votre aide
Benoît