Sto giocando con l'autorizzazione Oauth 2.0 in Facebook e mi chiedevo se i token di accesso che Facebook sviene mai scadono. In tal caso, esiste un modo per richiedere un token di accesso di lunga durata?
Sto giocando con l'autorizzazione Oauth 2.0 in Facebook e mi chiedevo se i token di accesso che Facebook sviene mai scadono. In tal caso, esiste un modo per richiedere un token di accesso di lunga durata?
Risposte:
Dopo aver scavato un po ', ho trovato questo. Sembra essere la risposta:
Aggiornato (11 / aprile / 2018)
Annuncio di modifica di Facebook (10/04/2018)
Facebook ha aggiornato la pagina di scadenza del token (10/04/2018)
offline_access: consente alla tua applicazione di eseguire richieste autorizzate per conto dell'utente in qualsiasi momento. Per impostazione predefinita, la maggior parte dei token di accesso scade dopo un breve periodo di tempo per garantire che le applicazioni effettuino richieste per conto dell'utente solo quando sta utilizzando attivamente l'applicazione. Questa autorizzazione rende il token di accesso restituito dal nostro endpoint OAuth di lunga durata.
È un valore di autorizzazione richiesto.
http://developers.facebook.com/docs/authentication/permissions
AGGIORNARE
L'autorizzazione offline_access è stata rimossa qualche tempo fa.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Prova questo potrebbe essere di aiuto completo per te
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
Per ottenere il token di accesso a vita devi usare scope=offline_access
Il significato di scope=offline_access
è che: -
Consente alla tua applicazione di eseguire richieste autorizzate per conto dell'utente in qualsiasi momento. Per impostazione predefinita, la maggior parte dei token di accesso scade dopo un breve periodo di tempo per garantire che le applicazioni effettuino richieste per conto dell'utente solo quando sta utilizzando attivamente l'applicazione. Questa autorizzazione rende il token di accesso restituito dal nostro endpoint OAuth di lunga durata.
Ma in base al futuro aggiornamento di Facebook, la funzionalità offline_acees sarà deprecata per sempre dal 3 ottobre 2012. e all'utente verrà fornito un token di accesso di lunga durata di 60 giorni e prima della scadenza del token di accesso Facebook notificherà o sarà possibile ottenere la tua personalizzazione funzionalità di notifica che recupera il valore di scadenza dall'API di Facebook.
Nota che Facebook sta ora deprecando il permesso offline_access a favore dei token per i quali puoi richiedere un "upgrade" alla scadenza. Sto solo affrontando questo, io stesso, quindi non ho molto altro da dire, ma questo documento può aiutare:
https://developers.facebook.com/docs/offline-access-deprecation/
Sono venuto qui con la stessa domanda dell'OP, ma le risposte che suggeriscono l'uso di offline_access stanno sollevando bandiere rosse per me.
Dal punto di vista della sicurezza, ottenere l'accesso offline all'account Facebook di un utente è qualitativamente diverso e molto più potente del semplice utilizzo di Facebook per l'accesso singolo e non dovrebbe essere usato alla leggera (a meno che non ne abbia davvero bisogno). Quando un utente concede questa autorizzazione, "l'applicazione" può esaminare l'account dell'utente da qualsiasi luogo e in qualsiasi momento. Ho messo "l'applicazione" tra virgolette perché in realtà è qualsiasi strumento che abbia le credenziali: potresti creare uno script per un'intera suite di strumenti che non hanno nulla a che fare con il server web che può accedere a qualsiasi informazione che l'utente ha accettato di condividere con quelli credenziali.
Non userei questa funzione per aggirare una breve durata del token; non è questo lo scopo previsto. In effetti, la durata del token stessa è una caratteristica di sicurezza. Sto ancora cercando dettagli sull'uso corretto di questi token (posso mantenerli? Come faccio / devo proteggerli? Facebook incorpora il "token di aggiornamento" OAuth 2.0 all'interno di quello principale? In caso contrario, dove si trova e / o come aggiorno?), ma sono abbastanza sicuro che offline_access non sia il modo giusto.
Sì, scadono. C'è un valore "expires" che viene passato insieme a "access_token" e da quello che posso dire sono circa 2 ore. Ho cercato, ma non vedo un modo per richiedere una scadenza più lunga.
dato che ho avuto lo stesso problema - vedi l'eccellente post su questo argomento di ben biddington, che ha chiarito tutti questi problemi con il token sbagliato e il tipo giusto da inviare per le richieste.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Puoi sempre aggiornare il token di accesso dell'utente ogni volta che l'utente accede al tuo sito tramite Facebook. L'accesso offline non può garantire di ottenere un token di accesso a vita, il token di accesso cambia ogni volta che l'utente revoca l'accesso all'applicazione o l'utente modifica la propria password.
Citato da facebook http://developers.facebook.com/docs/authentication/
Nota: se l'applicazione non ha richiesto l'autorizzazione offline_access, il token di accesso è limitato nel tempo. Anche il token di accesso con limiti di tempo viene invalidato quando l'utente si disconnette da Facebook. Se l'applicazione ha ottenuto l'autorizzazione offline_access dall'utente, il token di accesso non ha una scadenza. Tuttavia viene invalidato ogni volta che l'utente cambia la propria password.
Supponiamo di memorizzare l'uid facebook dell'utente e il token di accesso in una tabella utenti nel database, ogni volta che l'utente fa clic sul pulsante "Accedi con facebook", controlli lo stato di accesso utilizzando l'API Javascript di Facebook, quindi esamina lo stato della connessione dalla risposta , se l'utente si è connesso al tuo sito, puoi aggiornare il token di accesso nella tabella.
accedere all'account Facebook e modificare le impostazioni dell'applicazione (account -> impostazione dell'applicazione -> autorizzazione aggiuntiva dell'applicazione che utilizza il tuo account). deseleziona l'autorizzazione (Accedi ai miei dati quando non sto utilizzando l'applicazione (offline_access)). Quindi face book emetterà un nuovo token quando accedi all'applicazione.
Di base il token di Facebook scade circa in un'ora. Ma puoi utilizzare il token di "scambio" per ottenere un token di lunga durata https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
controlla le seguenti cose quando interagisci con l'API del grafico di Facebook.
1) L'URL di connessione dell'applicazione dovrebbe essere la base dell'URL di connessione "redirect_uri": - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Il tuo "redirect_uri "dovrebbe essere lo stesso in entrambi i casi (quando richiedi un codice di verifica e richiedi un access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3) dovresti codificare l'argomento quando richiedi un access_token 4) non deve passare l'argomento (type = client_cred) quando richiedi un access_token. il server di autorizzazione emetterà un token senza parte di sessione. non possiamo usare questo token con l'alias "me" nell'api del grafico. Questo token avrà una lunghezza di (40) ma un token con parte di sessione avrà una lunghezza di (81). Un token di accesso senza parte di sessione funzionerà con alcuni casi
ad esempio: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Ma l'API Graph con alias "me" funzionerà solo con token con parte di sessione.
Non so esattamente quando scadono i token, ma lo fanno, altrimenti non ci sarebbe un'opzione per dare i permessi offline.
Ad ogni modo, a volte richiedere all'utente di fornire autorizzazioni offline è eccessivo. A seconda delle tue esigenze, forse è sufficiente che il token rimanga valido fintanto che il sito web è aperto nel browser dell'utente. Per questo potrebbe esserci una soluzione più semplice: riagganciare l'utente periodicamente utilizzando un iframe: ri-login automatico di Facebook dal cookie php
Ha funzionato per me ...
Alcuni anni dopo, ma l'API Explorer di Facebook Graph ora ha un piccolo simbolo di informazioni accanto al token di accesso che ti consente di accedere all'app dello strumento token di accesso ed estendere il token API per un paio di mesi. Potrebbe essere utile durante lo sviluppo.