Sblocca il potere dell'API di LinkedIn: Guida Pratica ed esempi di codice per recuperare i propri contatti

Sblocca il potere dell'API di LinkedIn: Guida Pratica ed esempi di codice per recuperare i propri contatti

Rieccoci e ciao a tutti!

A grande richiesta, continuo quanto promesso nel mio precedente articolo, dove vi ho guidato attraverso il processo di creazione di un'applicazione LinkedIn per ottenere il vostro Token di accesso all'API di Linkedin.

Ora che abbiamo la chiave, è il momento di metterla al lavoro!

Vi anticipo che ci saranno alcuni passaggi tecnici, ma non vi preoccupate: ho promesso di rendere tutto estremamente semplice e capibile anche dalla mia nonna!

Verificare il Token con ReqBin

Un modo semplice per assicurarsi che il vostro Token funzioni correttamente è utilizzare ReqBin per testarlo.

Si tratta di una piattaforma online che permette di effettuare chiamate alle API, gratuito e senza bisogno di effettuare registrazioni.

Ecco come fare:

  1. Aprite il vostro browser e andate all'indirizzo https://reqbin.com/
  2. Inserite l'endpoint dell'API di LinkedIn per recuperare i vostri contatti: https://api.linkedin.com/rest/memberSnapshotData?domain=CONNECTIONS&q=criteria&start=0
  3. Nella sezione Auth, attivate l'opzione Bearer Token e riportate il vostro Token generato con le istruzioni del precedente articolo.
  4. Nella sezione degli header, inserite la chiave "LinkedIn-Version" e come valore impostate "202312"
  5. Impostate il metodo su "GET".
  6. Cliccate su "Send".

Article content
Article content

Se tutto è corretto, dovreste ricevere nella tabella di risposta in basso, un messaggio in formato JSON con l'elenco delle vostre connessioni LinkedIn!

Qui c'è un piccolo imbroglio, perchè in realtà nella risposta di Linkedin, probabilmente non ci sono tutti i contatti, questo perchè se abbiamo migliaia di contatti, questi vengono divisi in "pagine" ed ogni messaggi ne restituisce solo una!.

Potete vedere che in fondo al body del messaggio viene riportato il numero delle pagine totali (nel mio caso "total: 3").

Questo è il motivo per cui nella chiamata abbiamo inserito l'indicazione "start=0" ovvero chiediamo la prima pagina.

Per chiedere la seconda pagina dovete impostare "start=1" e così via (si lo so fa strano pensare che la sequenza parta da 0 e non da 1.

Python in Azione: Recupera i Tuoi Contatti

Ora vediamo come automatizzare il processo, e richiamare tutte le varie pagine e mettere insieme i messaggi ricevuti, con un breve script Python.

Con il seguente codice, il programma vi chiede di inserire la chiave e poi recupera da Linkedin tutte le tue connessioni e le salva sul file Connessioni.csv. Comodo no?

import requests
import csv

def fetch_linkedin_contacts(access_token):
    LINKEDIN_API_URL = 'https://api.linkedin.com/rest/memberSnapshotData?domain=CONNECTIONS&q=criteria'
    all_contacts = []
    start = 0
    has_more_data = True

    try:
        while has_more_data:
            url = f"{LINKEDIN_API_URL}&start= {start}"
            headers = {
                'Authorization': f'Bearer {access_token}',
                'LinkedIn-Version': '202312'
            }
            response = requests.get(url, headers=headers)
            if response.status_code != 200:
                raise Exception(f"HTTP error! Status: {response.status_code}")
            data = response.json()
            contacts = data['elements'][0]['snapshotData']
            all_contacts.extend(contacts)
            if start == data['paging']['total'] - 1:
                has_more_data = False  # Se la pagina attuale è l'ultima, esci dal ciclo
            else:
                start += 1  # Passa alla prossima pagina
        print(f'Fetched contacts: {len(all_contacts)}')
        return all_contacts
    
    except Exception as err:
        raise Exception(f"Unable to fetch contacts: {err}")

def save_contacts_to_file(contacts):

    with open("Connessioni.csv", "w", newline="", encoding="utf-8") as csv_file:
        writer = csv.writer(csv_file)
        writer.writerow(contacts[0].keys())  # Intestazione colonne
        for contact in contacts:
            writer.writerow(contact.values())
    print("Dati salvati in Connessioni.csv")

if __name__ == "__main__":
    access_token = input("Inserisci il tuo access token LinkedIn: ").strip()
    contacts = fetch_linkedin_contacts(access_token)
    save_contacts_to_file(contacts)        

Per lanciare il programma basta salvare il testo con un nome qualsiasi, ad esempio "contacts_sync.py" e lanciarlo dal vostro computer con il comando seguente:

>   python3 contacts_syncl.py        

O in alternativa potete scaricarvi il file direttamente da qui dove ho modificato leggermente il codice per inserire il corretto ordinamento dei campi, esattamente come il file generato da Linkedin se chiedete di scaricare i contatti manualmente.

Questo formato di file è inoltre compatibile per essere caricato direttamente su SocialYou

Anzi, restando in tema di SocialYOU, potrete a breve registrare direttamente il vostro Token personale. In questo modo l'aggiornamento dei contatti sarà alla portata di un click!


Article content


Liliana Dias

Marketing Manager at Full Throttle Falato Leads - I am hosting a live monthly roundtable every first Wednesday at 11am EST to trade tips and tricks on how to build effective revenue strategies.

1mo

Mauro, thanks for sharing! Any good events for sales and marketing executives coming up for you? We are hosting a CRO/CEO/Founder's Roundtable Mastermind on every 2nd and 4th Tuesday of each month at 11am EST covering the “CRO/Founders Revenue Pipeline Best Practices - Tips, Tactics and Strategies" We would love to have you be one of our special guests! Please join us by using this link to register for the zoom: https://www.eventbrite.com/e/crofounders-revenue-pipeline-best-practices-tips-tactics-and-strategies-tickets-1249362740589

Like
Reply
Alex Loprieno

Anti-Fragile Startup Founder | Entrepreneur | Mentor | Movie Lover | Forbes Italy Top 100 Manager 2023

6mo

Ottima questa!

Like
Reply
Filippo Satolli

CEO | Board Member | Entrepreneur | Advisor & Investor

6mo

A sto giro devo alzare le mani....devo dire che sono arrivato fino alla parte di Python ma poi mi sono perso :) :) :)

Gianluca Vaglio

Consulente tecnologico: aiuto le PMI a #risparmiareinnovando grazie all'Open Source - Innovation Manager - Formatore - Project Manager

6mo

Mauro Baldoni articolo molto interessante! Però ho una domanda: se non ho una pagina aziendale LinkedIn, perché magari sono un libero professionista, non posso creare l'app e quindi ottenere il token; è giusto? Magari l'hai scritto nel precedente articolo.

Like
Reply
Lucio B.

Prescriptive Analytics | vibe coding e workflow | Business Intelligence Università Bocconi | Software per i Certificates | Security DNA | Greater Milan Metropolitan area | Liguria Cavi BORGO |

6mo

Preferivo una soluzione nel paradigma hype del momento. Preferivo una soluzione low-code/no-code. Ma forse non è possibile. E allora ci tocca ancora python, ahimè. .

To view or add a comment, sign in

More articles by Mauro Baldoni

Explore content categories