2015-10-30 17 views
5

Ho un flusso di autenticazione a 3 vie che funziona su una mia applicazione web. Va come segue:Flusso a tre vie oauth sull'app mobile

  • Usa scatta Collegare con Google
  • Accettano nella finestra di dialogo OAuth che Google fornisce
  • La pagina ottiene reindirizzare da mia backend/OAuth/google endpoint con un parametro di codice che mando a Google per ottenere un refresh_token così posso accedere ai dati (come le informazioni del calendario) per loro
  • reindirizzo all'app Web passando il mio token JWT nell'URL.
  • Ogni volta che il web app fa una richiesta come api.mybackend.com/me che utilizzare il token JWT ho fornito

Sto cercando di realizzare qualcosa di simile in un app mobile. Qual è il modo accettabile per farlo? È praticamente la stessa logica?

Se è utile, il mio back-end è Ruby on Rails e sto scrivendo l'app mobile in Swift.

Grazie!

risposta

3

Se stai usando NSURLSession per fare richieste HTTP, quindi see this for information about handling redirects.

Google ha anche alcuni pacchetti precompilati accesso Google per iOS e Android che è possibile includere nella vostra applicazione, in modo simile a quello di il tuo client web. Non li ho mai usati, quindi non so esattamente come si sarebbero integrati con la tua app.

In alternativa è possibile impostare un endpoint di autenticazione nel proprio back-end che gestisce l'intera operazione, con l'app che richiede sempre una sola richiesta al server e al server che gestiscono le comunicazioni con Google. Ad esempio, potresti chiedere all'utente di inviare una richiesta a/oauth/mobile. Il server invia quindi una richiesta di autenticazione a Google e ottiene un token di accesso e un token di aggiornamento. Quindi puoi restituire il token della tua app dal server. Google has some documentation on Google Sign-In for server-side apps that may be relevant.