Après la publication d'un nouvel article ou d'un nouvel article de blog, le besoin d'en faire la promotion sur les réseaux sociaux se fait sentir. Partager manuellement la publication peut prendre du temps et être inefficace. Dans cet article, nous explorerons comment créer une fonction sans serveur pour partager l'URL d'un article sur LinkedIn à l'aide de son client API JavaScript et des fonctions sans serveur Netlify. Cela fait partie de la création d'un flux de travail automatisé pour la promotion des médias sociaux.
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
Pour commencer à travailler avec les API LinkedIn, nous devons effectuer les étapes suivantes :
Une fois terminé, le portail vous redirigera vers le tableau de bord de l'application, où nous pourrons commencer à configurer les autorisations et les produits API dont nous avons besoin pour l'application.
Dans le tableau de bord de l'application, cliquez sur les onglets Produits et demandez l'accès au partage sur LinkedIn et connectez-vous avec LinkedIn à l'aide des produits OpenID Connect.
Une fois ces autorisations accordées, nous pouvons nous diriger vers l'outil générateur de jetons OAuth 2.0 pour générer un jeton d'accès pour l'application. Le jeton doit inclure les étendues suivantes : w_member_social pour la publication au nom de l'utilisateur, ainsi que profile et openid pour l'authentification de l'utilisateur et les informations de profil.
Ce jeton d'accès est un jeton OAuth à 3 pattes, garantissant que l'utilisateur a explicitement autorisé l'application à agir en son nom. Après avoir généré le jeton, nous pouvons l'utiliser pour nous authentifier et envoyer des requêtes en toute sécurité aux API LinkedIn. De plus, nous pouvons consulter les autorisations et les étendues accordées à l'application dans l'onglet Auth du tableau de bord de l'application.
Super ! Maintenant que nous avons le jeton d'accès et l'application configurés, nous pouvons commencer à créer l'automatisation pour publier sur LinkedIn au nom de l'utilisateur (qui, dans ce cas, c'est nous).
Pour commencer à partager des publications par programme, nous pouvons utiliser le client JavaScript officiel de l'API LinkedIn pour Node.js en l'installant en tant que dépendance de projet :
npm install linkedin-api-js-client # or with yarn yarn add linkedin-api-js-client
Cette bibliothèque offre un moyen simple et léger d'interagir avec les points de terminaison de l'API LinkedIn, en exploitant Axios et TypeScript sous le capot.
Ensuite, créons un nouveau fichier, linkedin.ts, pour encapsuler la logique de partage de publications sur LinkedIn. Nous commençons par initialiser une instance client pour interagir avec l'API, comme indiqué ci-dessous :
// linkedin.ts import { RestliClient } from 'linkedin-api-js-client'; const client = new RestliClient();
Pour publier au nom d'un utilisateur, nous devons d'abord récupérer l'identifiant unique de l'utilisateur (qui est différent de son identifiant LinkedIn). Cela peut être fait en utilisant le point de terminaison /userinfo avec le jeton d'accès généré précédemment :
// linkedin.ts const getUserId = async (accessToken: string) => { const userResponse = await client.get({ resourcePath: "/userinfo", accessToken }); return userResponse.data?.sub; };
L'identifiant unique se trouve dans le sous-champ des données de la réponse. Cette valeur est requise pour l'étape suivante : partager une publication au nom de l'utilisateur.
Au sein de linkedin.ts, nous définissons une fonction pour partager l'URL d'une publication comme suit :
type SharePostArgs = { url: string; text: string; }; export const sharePost = async (token: string, content: SharePostArgs) => { //logic };
La fonction sharePost prend le jeton d'accès et le contenu à partager, qui inclut l'URL et le texte pour accompagner la publication. Nous créerons ensuite une nouvelle entité de publication sur la ressource Contenu généré par l'utilisateur à l'aide du point de terminaison /ugcPosts, comme indiqué ci-dessous :
export const sharePost = async (token: string, content: SharePostArgs) => { const response = await client.create({ resourcePath: '/ugcPosts', accessToken: token, entity: { //entity payload } }); };
La charge utile de l'entité est configurée pour inclure l'ID unique de l'utilisateur, récupéré précédemment, en tant qu'auteur. Le champ auteur suit le format urn:li:person:${userId}. De plus, nous précisons :
Voici la mise en œuvre mise à jour :
npm install linkedin-api-js-client # or with yarn yarn add linkedin-api-js-client
Ensuite, nous définissons le contenu de partage dans le champ spécifiqueContent de l'objet entité. Pour ce scénario, le champ SpecificContent inclut un objet com.linkedin.ugc.ShareContent, qui possède les propriétés suivantes :
Ci-dessous le code mis à jour :
// linkedin.ts import { RestliClient } from 'linkedin-api-js-client'; const client = new RestliClient();
Une fois la demande terminée avec succès, la réponse contient un CreateEntityId, représentant l'ID unique de l'entité créée. Nous pouvons renvoyer cette valeur à l'appelant pour référence ultérieure :
// linkedin.ts const getUserId = async (accessToken: string) => { const userResponse = await client.get({ resourcePath: "/userinfo", accessToken }); return userResponse.data?.sub; };
Et c'est tout ! Nous avons créé une fonction qui exploite l'API LinkedIn pour partager une URL de publication au nom d'un utilisateur. Dans la prochaine étape, nous exposerons cette fonction en tant que point de terminaison sans serveur utilisant Netlify, nous rapprochant ainsi de l'automatisation complète du processus de partage d'articles sur les réseaux sociaux.
Nous exécutons la commande CLI netlifyfunctions :créez et suivez les invites pour échafauder une nouvelle fonction sans serveur Netlify nommée share-on-linkedin. La CLI Netlify générera la fonction dans le répertoire des fonctions avec le code initial suivant :
type SharePostArgs = { url: string; text: string; }; export const sharePost = async (token: string, content: SharePostArgs) => { //logic };
Dans ce code ci-dessus, nous utilisons TypeScript et définissons la fonction comme asynchrone pour gérer la nature asynchrone des appels d'API LinkedIn.
Ensuite, nous mettons à jour la fonction sans serveur pour effectuer les actions suivantes :
export const sharePost = async (token: string, content: SharePostArgs) => { const response = await client.create({ resourcePath: '/ugcPosts', accessToken: token, entity: { //entity payload } }); };
À ce stade, la fonction sans serveur est prête. Nous pouvons le déployer sur Netlify et tester ses fonctionnalités en envoyant des requêtes POST au point final.
Pour tester la fonction sans serveur, démarrez un serveur local à l'aide de la commande CLI netlify dev. Ensuite, utilisez un outil comme Postman ou Insomnia pour envoyer une requête POST au point de terminaison du serveur avec la charge utile JSON suivante :
export const sharePost = async (token: string, content: SharePostArgs) => { //Get user's unique id const userId = await getUserId(token); const response = await client.create({ resourcePath: '/ugcPosts', accessToken: token, entity: { author: `urn:li:person:${userId}`, lifecycleState: "PUBLISHED", visibility: { "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC" } } }); };
Alternativement, nous pouvons créer une interface utilisateur de formulaire simple pour interagir avec l'API de la fonction sans serveur et vérifier que la publication est partagée avec succès sur LinkedIn.
Une fois que la fonction fonctionne comme prévu, procédons à son déploiement sur Netlify pour la rendre disponible.
Pour déployer notre fonction sur Netlify, exécutez la commande suivante :
npm install linkedin-api-js-client # or with yarn yarn add linkedin-api-js-client
La CLI déploie la fonction dans votre environnement de production Netlify. Vous pouvez ensuite trouver le point de terminaison de la fonction dans le tableau de bord Netlify.
Important : Assurez-vous de configurer la variable d'environnement LINKEDIN_ACCESS_TOKEN dans le tableau de bord. Cette étape est indispensable pour que la fonction s'authentifie et fonctionne correctement.
Nous avons créé avec succès une API sans serveur pour partager l'URL d'un article sur LinkedIn au nom d'un utilisateur, en tirant parti du client JavaScript de l'API LinkedIn et des fonctions sans serveur de Netlify. Cela marque une étape importante vers l’automatisation du processus de partage des articles de blog sur les réseaux sociaux.
À partir de là, nous pouvons étendre le flux de travail d'automatisation pour inclure d'autres plateformes de médias sociaux et tâches planifiées. Par exemple, nous pourrions intégrer des plateformes comme X (anciennement Twitter), Facebook ou BlueSky, et personnaliser le timing et le contenu des publications pour maximiser l'engagement et la portée du public.
Sur ce, restez à l'écoute pour plus de mises à jour sur cette série !
? Découvrez Vue 3 et TypeScript avec mon nouveau livre Learning Vue !
? Envie de me soutenir ? Achetez-moi un café.
Vous aimez cet article ou le trouvez-vous utile ? Partagez-le ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!