Estoy trabajando desde this reference y tratando de implementar el protocolo OAuth para permitir a los usuarios iniciar sesión en mi sitio a través de Facebook. Sin embargo, la documentación de Facebook es bastante terrible y no está claro en algunas partes clave.¿Cómo se renueva un token de acceso de Facebook caducado?
Se dice que la autorización tiene tres pasos:
autenticación de usuario (redirigir al usuario a
https://facebook.com/dialog/oauth?client_id=...&redirect_uri=...
, y esperan que la páginaredirect_uri
a ser llamado de nuevo con uncode
). ¡Funciona genial!Autorización de la aplicación (gestionada por Facebook, etc.). ¡Funciona genial!
autenticación de Aplicación (En la página de devolución de llamada, agarrar el
code
que se obtiene y llamahttps://graph.facebook.com/oauth/access_token?client_id=...&redirect_uri=...&client_secret=...&code=...
. El cuerpo de la respuesta incluirá unaaccess_token
que tenemos que hacer las cosas)
entiendo que con la access_token
, Puedo llamar a las API y tal. Pero, ¿qué sucede cuando expira? Podría obtener uno nuevo, pero en este punto serán muchas las solicitudes HTTP posteriores, y ya no tengo el code
que solía obtener en primer lugar. ¿Debo guardar el code
junto con el access_token
? O bien, ¿tengo que decirle al usuario que vuelva a iniciar sesión para obtener un nuevo code
y obtener un nuevo access_token
?
O, ¿me falta una parte clave aquí? No necesito un token offline_access
, ya que solo voy a sondear los datos en respuesta a las acciones del usuario.
Así que, espera, ¿estás diciendo que debería volver a autenticarte en cada carga de página? ¿No duplicará eso el número de solicitudes a mi servidor? –
Solo necesita volver a autenticarse cuando expira access_token. La respuesta en la que obtienes access_token también incluye un parámetro de caducidad que es el número de segundos hasta que expira access_token. Ya sabes cuándo se emite el token, así que todo lo que tienes que hacer es verificar si ha expirado en función de la cantidad de segundos. Si lo tiene, consigue uno nuevo. Si no lo ha hecho, continúe usándolo. – Owen
Oh, está bien. Afortunadamente, esta es la conclusión a la que vine antes. Simplemente inserto una redirección al comienzo del procedimiento OAuth cuando caduca el token. –