Sto usando Auth0, che mi dà un JWT (JSON web token) ed un refreshtoken. Io uso questo JWT nelle intestazioni http per comunicare con il mio back-end.Come gestire Auth0 403 errore senza l'aggiunta di codice specifico in tutto il mondo (Retrofit/okhttp/RxAndroid)
Potrebbe succedere che il server mi dia un 403
quando decide che il JWT è scaduto. In questo caso, posso chiedere ad Auth0 di emettermi un nuovo JWT, usando il refreshtoken. Significa che chiamo il backend Auth0, lo passo il refreshtoken e mi dà un nuovo JWT, che posso quindi usare nelle mie richieste.
La mia domanda è, come posso scrivere in modo efficiente questo comportamento in tutto il mio codice di rete? Avrò un paio di endpoint con cui parlare e tutti potrebbero restituire il 403.
Sto pensando che prima dovrei creare un intercettore che aggiunga il JWT a tutte le richieste.
Poi ci dovrebbe essere un comportamento che rileva il 403, lo fa in silenzio un networkcall a Auth0, recuperando il nuovo JWT. Quindi la richiesta originale dovrebbe essere riprovata, con il nuovo JWT nelle intestazioni.
Quindi io preferirei avere questo 403 movimentazione qualche parte invisibile al mio altro codice, e sicuramente non dover riscrivere ovunque.
Ogni punto su come ottenere questo risultato sarà apprezzato.
-
Per essere chiari, io sono fondamentalmente alla ricerca di indicazioni su come raggiungere questo obiettivo utilizzando RxAndroid osservabili. Quando un determinato Observable trova il 403, dovrebbe "iniettare" una nuova chiamata di rete.