Scaricare la cronologia dei post di un utente tramite l'API di Discourse?

Ciao,

Per rispettare i nostri obblighi legali, abbiamo bisogno di un modo per consentire agli utenti di scaricare l’intero storico dei loro post (non estratti) tramite l’API di Discourse, in modo che i dati possano essere inclusi quando un utente presenta una richiesta DSAR direttamente al nostro sito web / al nostro team legale (così da ottenere un registro completo sia dei dati Last.fm che dei post su Discourse). È attualmente possibile? E in tal caso, qual è il modo corretto per procedere?

Stavamo cercando di farlo utilizzando “get user actions” (Discourse API Docs), ma sembra che questo restituisca solo un registro parziale di estratti e non post completi.

So che gli utenti possono già scaricare i propri dati direttamente dalla pagina delle impostazioni delle attività su Discourse, ma temo che questo non sarà sufficiente per soddisfare il nostro team legale (:roll_eyes:) – insistono affinché i dati vengano scaricati dal nostro sito web. Avete qualche idea? Sono preoccupato che potremmo essere costretti a rinunciare al nostro piano di hosting se non risolviamo questa questione.

Grazie in anticipo per qualsiasi aiuto. :pensive:

1 Mi Piace

Beh, potresti teoricamente farlo tramite l’API (vedi Come fare reverse engineering dell’API di Discourse), ma non esiste un modo semplice per aggirare il requisito secondo cui devono cliccare sul link di validazione dell’email, che li protegge dal fatto che qualcun altro scarichi i loro dati.

1 Mi Piace

Come ha notato Jay, una richiesta POST autenticata a /export_csv/export_entity.json può essere utilizzata per generare l’archivio. Per farlo, è necessario utilizzare una chiave API globale per tutti gli utenti. Imposta il nome utente API della richiesta sul nome utente dell’utente per cui desideri creare l’archivio. Devi fornire un parametro entity nella richiesta. Il parametro entity deve essere impostato su user_archive. Con questo approccio, verrà generata una notifica per l’utente. Per la maggior parte degli utenti, ciò invierà anche un’e-mail contenente un link di download, ma non penso che si possa fare affidamento su questo: dipende da come l’utente ha configurato le proprie preferenze di posta elettronica.

Ecco un esempio di richiesta curl per generare l’archivio. Ho sostituito $api_key con una chiave API globale per tutti gli utenti nella richiesta:

curl -X POST "http://localhost:3000/export_csv/export_entity.json" -H "Api-Username: Ben" -H "Api-Key: $api_key" -F "entity=user_archive"

Non sono sicuro che esista un modo per generare l’archivio in modo da poterlo condividere senza che l’utente debba accedere alla notifica e fare clic sul suo link di download. Forse potrebbe essere sviluppata una query di Data Explorer che restituisce le informazioni. Potresti quindi eseguire la query di Data Explorer tramite l’API. Lo svantaggio di questo approccio è che se la query restituisce più di 10.000 righe di dati, dovrai effettuare più richieste per ottenere tutti i dati. Per ulteriori dettagli sull’approccio di Data Explorer, consulta: Come eseguire query di Data Explorer con l’API di Discourse.

3 Mi Piace

Grazie, invierò queste informazioni al nostro team di sviluppo — speriamo di risolverlo senza troppe difficoltà. :crossed_fingers:

1 Mi Piace