5

Come implementare il flusso normale okeeper di portineria dopo che l'utente ha effettuato l'autenticazione tramite Facebook tramite la mia app mobile?Autenticazione con il portiere dopo l'autenticazione facebook

PS Sto utilizzando la gemma di portineria per implementare un provider oauth2 per la mia app mobile. Utilizzo il flusso delle credenziali delle password del proprietario delle risorse per implementare l'autenticazione tramite il nome utente e la password dell'utente.

Quindi, se un utente esegue l'autenticazione tramite Facebook tramite l'app mobile, come posso autenticare un utente tramite il custode con il token di accesso di Facebook. Quindi nessun nome utente/password è presente in questo caso (quale portiere segnala un errore di parametri mancanti).

Qual è il modo corretto per implementare questo flusso.

1. User authenticates from facebook through the mobile app. 
2. Facebook access token is passed to the API server. 
3. If the access token is valid, the api server returns the 
    doorkeeper access token. 
4. In case the access token is not valid, the api server returns 401 Unauthorized. 

Qual è l'approccio corretto per implementare questo flusso? Alcune indicazioni nella giusta direzione sono molto apprezzate.

+0

Hai già trovato una soluzione? – Samnang

+0

beh sì ... ho implementato lo stesso flusso che ho menzionato nella domanda. se il token non era valido, ho restituito nil e il token era valido, ho restituito l'oggetto utente –

+1

Come si fa il passaggio 3? Facebook nella loro risposta mi darà un token ... come posso controllare se questo token è valido nel server API? – user1364684

risposta

6

Questa estensione alla concessione portinaio esistente flussi, risolve proprio questo problema: https://github.com/doorkeeper-gem/doorkeeper-grants_assertion

Il flusso affermazione è uno scambio tra access_token di un provider, per un token di accesso dal fornitore di OAuth.

+0

Dopo l'implementazione ottengo 'NoMethodError (metodo non definito 'resource_owner_from_assertion' per # ):' qualche suggerimento? –

+0

Mi dispiace tanto per aver risposto così tardi. L'ho dimenticato. La soluzione sembra perfetta. Accetterò questa risposta anche se non l'ho provato personalmente. Dovrò provarlo presto. –

3

C'è una richiesta di pull per risolvere "NoMethodError (metodo non definito 'resource_owner_from_assertion' per #)":

cambiare la vostra Gemfile:

gemma "guardiano-grants_assertion", GitHub: "Inittec/doorkeeper-grants_assertion ", branch:" master "

+0

Ciao questa non è una soluzione al mio problema. Per favore non postare come risposta. Puoi comunque postarlo come una tua domanda e risposta in quanto aiuterà anche gli altri. (Un buon modo per ottenere alcuni punti qui :)) –

Problemi correlati