2013-12-10 17 views
5

Nell'API grafico di Facebook, una volta che l'utente è stato autenticato inizialmente, è possibile interagire direttamente con l'API (dal server) per ottenere un token di accesso alle pagine di lunga durata. Questo token di accesso alla pagina di lunga durata non scade mai. (https://developers.facebook.com/docs/facebook-login/access-tokens/)Il flusso di rinnovo dei token di accesso di LinkedIn può essere eseguito sul server?

Nella lettura della documentazione di LinkedIn, sembra impossibile ottenere un token di accesso con un token di accesso indefinito (non in scadenza). Sembra che scadano ogni 60 giorni. Tuttavia, questi token di accesso possono essere aggiornati prima che siano trascorsi i 60 giorni.

Ciò che non è del tutto chiaro dalla documentazione è se il rinnovo del token di accesso può essere eseguito o meno sul server da solo senza l'interazione del client. Il linguaggio della documentazione suggerisce che è necessaria l'interazione del client (browser), ma nulla è esplicitamente dichiarato.

Quindi, la mia domanda è, è possibile rinnovare un token di accesso di LinkedIn utilizzando il server da solo, senza l'interazione del client (browser)?

relativa documentazione di riferimento LinkedIn: https://developer.linkedin.com/documents/handling-errors-invalid-tokens

risposta

13

Come risulta, i token di accesso di linkedin non possono essere aggiornati senza che l'utente di LinkedIn acceda a linkedin. Si prega di fare riferimento al primo commento here dal dipendente LinkedIn che indica chiaramente una nota che "this refresh will only work if the user is still logged into LinkedIn (authenticated) and the current access token isn't expired. Otherwise, the user will be presented with the login dialog again."

Immagino che ora sia un grosso problema per coloro che precedentemente memorizzavano i token di accesso linkedin al database per un uso successivo.

Lo dico alcuni link qui che si riferiscono alla questione con rinfrescante gettoni linkedin OAuth2 (spero che questo lo rende chiaro per tutti coloro che sono alle prese con lo stesso problema):

1) This refresh will only work if the user is still logged into LinkedIn (authenticated) and the current access token isn't expired. Otherwise, the user will be presented with the login dialog again.

2) There is no way to refresh the token using the old authentication token/secret. User needs to log into linkedin in order for you to refresh the tokens. We use this flow as it protects our members and their data in the best possible manner.

3) Refreshing an access token is very simple and can happen without an authorization dialog appearing for the user. In other words, it's a seamless process that doesn't affect your application's user experience. Simply have your application go through the authorization flow in order to fetch a new access token with an additional 60 day life span. When the following conditions exist: -User is still logged into Linkedin.com -The current access token isn't expired (within the 60 life span) We will automatically redirect the user back to your redirect_uri without requiring them to reauthorize your application. If they don't exist, we'll prompt them to login and then redirect them.

4) We have also standardized the duration of the authorization tokens. Previously, members could choose to grant tokens that were as short as one day or as long as forever. Now all tokens are 60 days in length, with the ability for you to extend them in a series of rolling 60 day increments whenever the member comes back to your application. To prevent a bad user experience in your application, be sure to proactively refresh tokens and elegantly route any expired tokens through a refresh flow.

5) As long as the user is logged into LinkedIn and their current access token hasn't expired, you can fetch an access token with a 60 day lifespan the next time the user comes to your application.

+0

Grazie per la tua risposta! Noterai che l'affermazione che hai trovato è ancora un po 'ambigua - potrebbe essere interpretata nel senso, ad esempio, che finché l'utente ha ancora una sessione attiva * da qualche parte *, il tuo codice di back-end può connettersi indipendentemente per aggiornare il token, senza i cookie del cliente e tale presenza. Per quello che vale, la conclusione a cui sono giunto è che il client * deve * essere parte del processo di rinnovo del token. In realtà, purtroppo, sarei molto sorpreso se questo non fosse il caso. – rinogo

+1

@rinogo, sì, hai ragione.L'utente deve essere la parte del processo di rinnovo del token, quindi non è possibile ottenerlo dal solo lato server. – Sangram

+1

la maggior parte dei link sono morti –

2

ho avuto la stessa domanda e la LinkedIn documenti e messaggi del forum sono confuse, ma sono abbastanza sicuro ora che non è possibile fare a livello di codice senza l'intervento dell'utente (cioè il l'utente deve accedere alla tua app tramite LinkedIn auth per aggiornare il token).

+1

Questo è quello che temevo ... Avete implementato qualcosa per rendere questo processo di riautenticazione più semplice e meno scomodo per l'utente? Sarei interessato a saperne di più sul tuo flusso di lavoro! – rinogo

+1

Anche io stavo cercando lo stesso, ma penso che non ci sia modo di aggiornare i token di oauth2 linkedin senza l'intervento dell'utente. Sono venuto a sapere che si possono aggiornare i token di Facebook in questo modo, ma sfortunatamente non è possibile con linkedin sembra. – Sangram

Problemi correlati