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:
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!
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.
1moMauro, 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
Anti-Fragile Startup Founder | Entrepreneur | Mentor | Movie Lover | Forbes Italy Top 100 Manager 2023
6moOttima questa!
CEO | Board Member | Entrepreneur | Advisor & Investor
6moA sto giro devo alzare le mani....devo dire che sono arrivato fino alla parte di Python ma poi mi sono perso :) :) :)
Consulente tecnologico: aiuto le PMI a #risparmiareinnovando grazie all'Open Source - Innovation Manager - Formatore - Project Manager
6moMauro 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.
Prescriptive Analytics | vibe coding e workflow | Business Intelligence Università Bocconi | Software per i Certificates | Security DNA | Greater Milan Metropolitan area | Liguria Cavi BORGO |
6moPreferivo 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è. .