Ricevere le notifiche da un utente

Rispondendo a questo argomento: How to allow users to get their API Key - #4, ho deciso di rendere la mia applicazione accessibile solo agli amministratori, che possono creare facilmente una chiave API tramite il pannello /admin. L’applicazione funziona, ma devo risolvere un problema: la chiave API deve avere accesso globale (lettura e scrittura) per raggiungere l’endpoint /notifications.json?username=theusername. Nel pannello di creazione della chiave API vedo che esiste un ambito “show” che permette l’accesso all’endpoint “/users/:username/notifications”. Tuttavia, quando provo a utilizzare la chiave con ambito tramite Postman su questo URL, ricevo codice HTML. Lo stesso accade per “/users/:username/notifications.json”, che mi invia informazioni sull’utente ma non sulle notifiche. Inoltre, non ho accesso a /notifications.json?username=… solo con questo ambito. Concludo quindi che la chiave globale sia l’unica soluzione per ottenere correttamente le notifiche, vero? Grazie per il vostro aiuto.

Non riesco a riprodurre il problema.

Ho una chiave API da amministratore come questa:

e la seguente richiesta cURL funziona correttamente:

➜  ~ curl 'https://meta.discourse.org/u/falco/notifications.json' \
-H "Api-Key: whyisthisapikeysolonglol"

Grazie ancora per la tua risposta, Falco. Come ho detto, questo URL mi ha effettivamente inviato una risposta, ma non riguarda le notifiche bensì le informazioni sull’utente, come si può vedere da questa immagine:

È effettivamente vero!

Sembra che la route /u/:username/notifications sia semplicemente una route del browser, e l’app Ember utilizzerà la route standard /notifications.json per recuperare i dati effettivi. E al momento quella route non è inclusa nell’elenco delle possibili scope delle chiavi API di amministratore.

Quindi, al momento, per le notifiche è possibile utilizzare solo una chiave API utente o una chiave API di amministratore senza scope.

Grazie, è tutto ciò di cui avevo bisogno per le informazioni. Saluti :slight_smile: