Qual è il modo corretto per aggiornare l'accesso a Facebook OAuth2 gettone dopo la scadenza?

StackOverflow https://stackoverflow.com/questions/4622171

Domanda

A quanto ho capito, questo è il processo di base per le nuove applicazioni di Facebook iframe tela utilizzando l'API OAuth2 in poche parole:

  1. il reindirizzamento (o hanno utente clicca link) l'autorizzazione di URL app
  2. autorizza utente e viene reindirizzato al callback URL
  3. Richiamata utilizza il parametro "codice" per ottenere un token di accesso
  4. di token di accesso viene utilizzato con Graph API per le informazioni tirare o spingere

Il problema è che i token di accesso scadono in tempi relativamente brevi e devono essere "rinfrescati", così le mie domande sono: 1) come si fa rilevare che il token è scaduto a parte cercando di usarlo e semplicemente ottenere un errore? e 2) Qual è la migliore pratica per l'ottenimento di un nuovo token?

Al momento, ho solo rilevare che c'è stato un errore nel tentativo di ottenere le informazioni dell'utente con il token di accesso, quindi reindirizzare all'URL di autorizzazione di nuovo - dal momento che già autorizzato l'applicazione una pagina vuota lampi di e vengono reindirizzati di nuovo a la mia app richiamata in cui ricevo un gettone fresca. E 'così goffo Non posso credere che questo è il metodo corretto.

È stato utile?

Soluzione

  1. L'unico modo per capire se un cookie è valido è quello di usarlo e rilevare l'errore, se è scaduto. Non esiste un metodo polling o nulla per controllare se un token è valido.

  2. Per ottenere un nuovo token, semplicemente reindirizzare l'utente alla pagina di autenticazione di nuovo. Perché hanno già autorizzato la vostra applicazione saranno immediatamente reindirizzato alla vostra applicazione e si avrà un nuovo token. Non verrà richiesto di permettere dal momento che hanno già fatto.

In breve, non ci sono trucchi per questo. Si sta già facendo in modo corretto.

Altri suggerimenti

Recentemente, Facebook ha apportato alcune modifiche alla token di accesso che consente loro di essere aggiornati periodicamente.

https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN 

Per ulteriori dettagli, controllare qui: https: // sviluppatori .facebook.com / docs / roadmap / completate-modifiche / offline-access-rimozione

//you just need more step because the access token you are getting will expire in 1 hour
    //you can overcome this in step 5

    1-Redirect to (or have user click link to) app's authorization URL
2-User authorizes and is redirected to your callback URL
3-Callback uses "code" parameter to get a access token
4-Access token is used with Graph API to pull or push information
    5-exchange short-lived access token you just got with 60 day access token
    https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN
    6-after 60 day the user must login again to your app and the steps from 1-5 will be repeated.
    --the real problem you will face is how to make the user visit your app page again

Facebook ha rimosso la funzione di aggiornamento del token di accesso sul "conto di" modalità. Il modo migliore e più semplice è quello di reindirizzare l'utente alla pagina di login facebook per ri-OAuth l'applicazione. Trova Facbook doc qui

se l'utente ha già autorizzato l'applicazione e token di accesso scaduto. è possibile reindirizzare utente alla pagina di autenticazione di nuovo. ma OAuth dialogo doestn't spettacolo, perché utente già autorizzato l'applicazione. che reindirizzerà alla REDIRECT_URL parametro è stato utilizzato.

{    "Errore": {       "Messaggio": "Missing parametro redirect_uri.", "Type": "OAuthException", "codice": 191, "fbtrace_id": "BHvng7s53ra"}}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top