


Développer l'automatisation des médias sociaux : partage LinkedIn avec une fonction sans serveur
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.
Table des matières
- Table des matières
- Prérequis
-
Commencer
- Configuration des autorisations
- Configuration des paramètres OAuth 2.0
-
Partager une publication avec une URL à l'aide du client JS de l'API LinkedIn
- Obtenir l'identifiant unique de l'utilisateur
- Partager l'URL d'une publication
- Exposer en tant que fonction sans serveur Netlify
- Test de la fonctionnalité
- Déploiement avec Netlify
- Résumé
Conditions préalables
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
- Un compte LinkedIn
- Node.js et Netlify CLI installés.
- Un compte Netlify et un site créé pour déployer la fonction serverless.
- Connaissance de base de JavaScript et TypeScript.
Commencer
Pour commencer à travailler avec les API LinkedIn, nous devons effectuer les étapes suivantes :
- Rendez-vous sur LinkedIn Developer Console avec votre compte LinkedIn.
- Créez une nouvelle application en cliquant sur le bouton Créer une application.
- Remplissez les détails tels que le nom de l'application (Social Media Tester, par exemple) et l'image du logo de l'application.
- Vous aurez besoin d'une page d'entreprise LinkedIn à associer à l'application que vous créez (toute page à laquelle vous disposez d'un accès administrateur pour pouvoir vérifier la connexion par la suite).
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.
Configuration des autorisations
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.
Configuration des paramètres OAuth 2.0
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).
Partager une publication avec une URL à l'aide du client JS de l'API LinkedIn
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();
Obtenir l'identifiant unique de l'utilisateur
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.
Partager l'URL d'une publication
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 :
- L'état du cycle de vie comme "PUBLIÉ".
- La visibilité en "PUBLIC" donc la publication est visible sur le réseau LinkedIn.
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 :
- shareCommentary : accepte content.text comme contenu de texte principal à afficher.
- shareMediaCategory : Spécifie le type de média partagé dans la publication (défini comme "ARTICLE").
- media : un tableau d'actifs multimédias pour la catégorie "ARTICLE", où chaque élément comprend : l'URL à partager et un statut PRÊT.
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.
Exposer en tant que fonction sans serveur Netlify
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 :
- Analyser le corps de la requête pour extraire le contenu à partager,
- Récupérer le jeton d'accès à partir des variables d'environnement (peut être défini dans le fichier .env à la racine du projet),
- Appelez la fonction sharePost (définie précédemment dans linkedin.ts ) avec les paramètres extraits, et
- Renvoyer l'ID d'entité créé comme réponse.
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.
Test de la fonctionnalité
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.
Déployer avec Netlify
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.
Résumé
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!

J'ai construit une application SAAS multi-locataire fonctionnelle (une application EdTech) avec votre outil technologique quotidien et vous pouvez faire de même. Premièrement, qu'est-ce qu'une application SaaS multi-locataire? Les applications saas multi-locataires vous permettent de servir plusieurs clients à partir d'un chant

Cet article démontre l'intégration frontale avec un backend sécurisé par permis, construisant une application fonctionnelle EdTech SaaS en utilisant Next.js. Le frontend récupère les autorisations des utilisateurs pour contrôler la visibilité de l'interface utilisateur et garantit que les demandes d'API adhèrent à la base de rôles

JavaScript est le langage central du développement Web moderne et est largement utilisé pour sa diversité et sa flexibilité. 1) Développement frontal: construire des pages Web dynamiques et des applications à une seule page via les opérations DOM et les cadres modernes (tels que React, Vue.js, Angular). 2) Développement côté serveur: Node.js utilise un modèle d'E / S non bloquant pour gérer une concurrence élevée et des applications en temps réel. 3) Développement des applications mobiles et de bureau: le développement de la plate-forme multiplateuse est réalisé par réact noral et électron pour améliorer l'efficacité du développement.

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Python est plus adapté à la science des données et à l'apprentissage automatique, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python est connu pour sa syntaxe concise et son écosystème de bibliothèque riche, et convient à l'analyse des données et au développement Web. 2. JavaScript est le cœur du développement frontal. Node.js prend en charge la programmation côté serveur et convient au développement complet.

JavaScript ne nécessite pas d'installation car il est déjà intégré à des navigateurs modernes. Vous n'avez besoin que d'un éditeur de texte et d'un navigateur pour commencer. 1) Dans l'environnement du navigateur, exécutez-le en intégrant le fichier HTML via des balises. 2) Dans l'environnement Node.js, après avoir téléchargé et installé Node.js, exécutez le fichier JavaScript via la ligne de commande.

Comment envoyer à l'avance des notifications de tâches en quartz lors de l'utilisation du minuteur de quartz pour planifier une tâche, le temps d'exécution de la tâche est défini par l'expression CRON. Maintenant...


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),