2011-02-05 8 views
5

En this url, Facebook explica cómo autenticarse mediante Facebook Connect.¿Cómo puedo obtener un nuevo 'código de autorización' sin una redirección HTTP?

Básicamente, los pasos son los siguientes:

  1. Redirigir a facebook como el ejemplo. Como resultado de ello voy a conseguir un código de autorización

    https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream 
    
  2. hacer un post HTTP a la siguiente dirección, pidiendo una señal_acceso

    https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE 
    

Facebook responderá a la última Publicación de HTTP con access_token. Multa.


El señal_acceso recibieron anteriormente expira. La cantidad de segundos que seguirá siendo válida se devuelve junto con el access_token. De acuerdo.

El problema es: ¿Qué debo hacer después de que caduque?

De Facebook web oficial:

Además del token de acceso (el parámetro señal_acceso), la respuesta contiene el número de segundos hasta que el token expire (el parámetro expira). Una vez que el token caduque, deberá volver a ejecutar los pasos anteriores para generar un nuevo código y access_token

¡Espere! No puedo volver a ejecutar los pasos anteriores porque para obtener un nuevo código de autorización tendría que redirigir (paso 1). No quiero redirigir Deseo obtener un nuevo código de autorización a través de un servicio web. El usuario ya autorizó mi aplicación y no tendré la oportunidad nuevamente de redirigirlo.

¿Qué debo hacer?

PD: Pensando lógicamente, no necesitaría obtener un nuevo código de autorización después de que expira access_token. Un nuevo access_token sería suficiente. Pero, como mostré, Facebook dice que el código de autorización también expira.

+0

Creo que la la pregunta debe ser "¿Cómo puedo obtener un nuevo 'token de acceso' sin una redirección HTTP?" un "token de acceso" en lugar de un "código de autorización" – Carmela

Respuesta

2

Desea utilizar el permiso "acceso_acceso_influente". Esto permite que el token sea de larga duración. Ver la página de permisos: http://developers.facebook.com/docs/authentication/permissions/.

+5

El permiso 'offline_access' está en desuso y se eliminará en algún momento de mayo de 2012. –

+1

@SteveTaylor Cualquier idea de lo que se puede hacer sobre este tema, si el acceso offline es De hecho, desaprobado? –

0

Como eliminaron offline_access, Facebook proporcionó una forma de extender la caducidad de los tokens de corta duración existentes.

Simplemente haga la petición siguiente:

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 

Y, sobre la expiración del token de acceso de larga vida,

Currently the long-lived user access_token will be valid for 60 days while the 
short-lived user access_tokens are currently valid from 1 to 2 hours. 

Para obtener más información, por favor refiérase a https://developers.facebook.com/roadmap/offline-access-removal/

Cuestiones relacionadas