Sto seguendo le linee guida per ottenere chiavi API per utente: User API keys specification.
Ho completato i passaggi: il client genera una coppia di chiavi pubblica/privata e un URL di ritorno, passa a una rotta di Discourse, l’utente concede l’autorizzazione a Discourse per utilizzare l’app e Discourse genera una chiave API.
Tuttavia, quando Discourse restituisce la chiave API come “payload” nell’URL di ritorno, quella chiave non funziona. Provo a decifrarla, ma non ci riesco.
Inserisco quella chiave in una decrittazione JavaScript standard (come nella risposta qui) e ricevo un errore “length is invalid” (o DATA_LEN_NOT_EQUAL_TO_MOD_LEN, a seconda del metodo di decrittazione JavaScript che sto utilizzando).
Avete qualche idea su come risolvere?
Questa è una funzionalità cruciale, quindi qualsiasi aiuto è davvero apprezzato.
Devo modificare in qualche modo la chiave fornita nel payload? È possibile che la chiave fornita nel payload non funzioni?
Un po’ più di dettagli:
Penso che il mio metodo generale sia corretto, perché Discourse offre un altro metodo per ottenere una chiave per utente e riesco a decifrare quella chiave:
Se ometto l’URL di reindirizzamento nella richiesta a Discourse, Discourse non esegue il reindirizzamento. Invece, stampa una chiave sullo schermo per l’utente da copiare.
Quella chiave è più corta della chiave fornita in un “payload” (ha circa 684 caratteri, mentre la chiave nel payload ne ha circa 762). E quella chiave funziona: riesco a decifrarla senza problemi usando JavaScript.
Ma chiedere all’utente di copiare e incollare una chiave API è confuso per gli utenti: il flusso corretto consiste nell’ottenere la chiave dal payload. Come faccio a far funzionare quella chiave del payload?