TL;DR, Respuesta Rápida
9 min de lecturaLinkedIn documenta que "all access tokens are issued with a 60-day lifespan" y su respuesta de ejemplo devuelve expires_in 5184000, exactamente 60 días. Los refresh tokens programáticos duran 365 días, no se reinician al usarlos y están limitados a los partners aprobados del Marketing Developer Platform. Pedir un scope nuevo invalida todos los tokens que ya tengas. El token de 60 días de Meta devuelve 5183944 en su lugar, 56 segundos menos, y su Page token derivado no caduca nunca.
¿Cuánto dura un token de acceso de LinkedIn?
Cada token de acceso de LinkedIn emitido por el flujo de código de autorización lleva el mismo reloj, y LinkedIn da la cifra sin matices: "Currently, all access tokens are issued with a 60-day lifespan." Esa línea está en la tabla de campos de respuesta de expires_in de la página de OAuth de tres patas, que es el flujo que usa cualquier integración de publicación.
La respuesta de ejemplo que LinkedIn publica en esa página coincide con la frase al segundo:
{
"access_token":"AQUvlL_DYEzvT2wz1QJiEPeLioeA",
"expires_in":5184000,
"scope":"r_basicprofile"
}5.184.000 segundos son 60 días exactos, sin recortar nada. Aun así, lee el campo y no la frase. La propia guía de LinkedIn dice que "Access tokens stay valid until the number of seconds indicated in the expires_in field in the API response," y expires_in es el único valor que refleja lo que tu token recibió de verdad.
¿Qué duración tiene cada token de LinkedIn?
Hay tres, y no se parecen en nada.
| Credencial | Duración documentada | De dónde viene |
|---|---|---|
| Código de autorización | 30 minutos | GET /oauth/v2/authorization |
| Token de acceso de tres patas | 60 días | POST /oauth/v2/accessToken |
| Token de aplicación de dos patas | 30 minutos | grant_type=client_credentials |
| Refresh token programático | 365 días | Devuelto junto al token de acceso |
El código de autorización es con el que tropieza primero la gente. LinkedIn escribe que "the authorization code has a 30-minute lifespan and must be used immediately," y que si caduca "you must repeat all of the previous steps to request another authorization code."
El token de dos patas es una sorpresa de otro tipo. La página de client credentials de LinkedIn dice "The access token has a 30-minute lifespan and must be used immediately," y su ejemplo devuelve "expires_in": "1800" como cadena entrecomillada en lugar del entero que devuelve el flujo de tres patas. El de dos patas tampoco está disponible para las APIs que necesitan la mayoría de herramientas de publicación: "2-legged OAuth authentication is not available for Marketing APIs."

¿LinkedIn te da un refresh token?
Solo si LinkedIn te ha aprobado para ello. La página del refresh token abre con la barrera: "LinkedIn supports programmatic refresh tokens for all approved Marketing Developer Platform (MDP) partners," y la página del flujo de código de autorización lo repite desde el otro lado, diciendo que los refresh tokens programáticos "are available for a limited set of partners."
Si tu app no está en ese grupo, la vía de renovación documentada por LinkedIn no es un grant type. Es devolver al miembro por /oauth/v2/authorization. LinkedIn lo describe como algo transparente, y realmente puede serlo, porque la pantalla de consentimiento se salta cuando se cumplen dos condiciones: "The member is still logged into www.linkedin.com" y "The member's current access token has not expired." Si falla una de las dos, tu usuario vuelve a ver la pantalla de autorización completa.
Por eso el propio consejo de LinkedIn es renovar pronto: "Make sure your application refreshes access tokens before they expire, to avoid unnecessarily sending your application's users through the authorization process again." Un token renovado el día 55 se renueva en silencio. Un token renovado el día 61 ya no puede renovarse.
Los partners aprobados canjean el refresh token en su lugar:
POST https://www.linkedin.com/oauth/v2/accessToken
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}¿Cuánto dura el refresh token de LinkedIn?
365 días, y el reloj no se reinicia nunca. LinkedIn escribe que "access tokens are valid for 60 days and programmatic refresh tokens are valid for a year," y luego deletrea la consecuencia que pilla a la gente: "When you use a refresh token to generate a new access token, the lifespan or Time To Live (TTL) of the refresh token remains the same as specified in the initial OAuth flow (365 days), and the new access token has a new TTL of 60 days."
El ejemplo desarrollado de LinkedIn conviene leerlo al pie de la letra:
- Día 1: el refresh token tiene 365 días, el token de acceso tiene 60.
- Día 59: renovar te da un token de acceso nuevo de 60 días, y al refresh token le quedan 306.
- Día 360: "your access token and refresh token will both expire in 5 days (365-360=5) and you must get your application reauthorized by the member."
Así que un refresh token te compra unas seis renovaciones silenciosas y luego el miembro tiene que volver a pulsar Allow. No hay ventana móvil, ni rotación del refresh token que amplíe el horizonte, ni forma documentada de pedir más.
¿Qué devuelve en realidad refresh_token_expires_in?
Aquí LinkedIn se contradice, y la aritmética lo deja claro. El campo está documentado como "The number of seconds remaining until the refresh token expires." La respuesta de ejemplo de esa misma página devuelve:
AdaptlyPost
Prueba gratis de 7 días
Analíticas multiplataforma
Bandeja Social
Asistente con IA
{
"refresh_token_expires_in": 525600,
"scope":"r_basicprofile"
}525.600 segundos son 6,08 días, que no es un año ni ninguna duración documentada de LinkedIn. 525.600 minutos son exactamente 365 días. El ejemplo está en minutos mientras que la descripción del campo dice segundos.
El segundo ejemplo lo remata. Después de una renovación, la página de LinkedIn muestra "refresh_token_expires_in": 439200. La diferencia entre los dos valores es 86.400, y 86.400 minutos son 60 días, que es justo el hueco que describe el ejemplo desarrollado entre emitir un refresh token y usarlo una vez. Los dos valores de ejemplo son coherentes como minutos y un disparate como segundos.
Trata la descripción del campo como autoritativa y los números de ejemplo como un desliz de documentación. Si guardas una caducidad absoluta, calcúlala con lo que te devuelve la API en vivo, no con ninguna de las dos cifras de esa página.

¿Qué invalida un token de acceso de LinkedIn antes de los 60 días?
Cuatro cosas, todas documentadas.
Pedir un scope distinto es la que sorprende a los desarrolladores, porque nada se rompe a la vista hasta que se rompe. LinkedIn escribe: "If you request a different scope than the previously granted scope, all the previous access tokens are invalidated." Publicar una versión que añade un permiso mata todos los tokens que tienen tus usuarios actuales. La misma página avisa aparte de que "If the scope permissions are changed in your app, your users must re-authenticate."
La revocación por parte de LinkedIn es la segunda, y LinkedIn es tajante al reservársela: "LinkedIn reserves the right to revoke Refresh Tokens or Access Tokens at any time due to technical or policy reasons. In such scenarios, the expectation from products leveraging Refresh Tokens is to fallback to the standard OAuth flow, and present the login screen to the end users."
La revocación por parte del miembro es la tercera. Un miembro que desconecta tu app en su configuración de LinkedIn termina la concesión de inmediato.
Un intento de renovación con una credencial muerta es la cuarta, y devuelve un error concreto: 400 invalid_request "The provided authorization grant or refresh token is invalid, expired or revoked". La columna de resolución de LinkedIn ofrece un único remedio, "reauthenticate the member to generate the new refresh token."
No tienes que adivinar cuál de las cuatro ocurrió. POST https://www.linkedin.com/oauth/v2/introspectToken recibe tu client_id, tu client_secret y el propio token, y devuelve status como revoked, expired o active, junto con expires_at, created_at, authorized_at y auth_type. Esa es la llamada que hay que hacer cuando las publicaciones programadas de LinkedIn dejan de funcionar en una cuenta y en ninguna más.
¿En qué se diferencia del token de 60 días de Meta?
Las dos plataformas dicen 60 días. Casi nada más encaja.
| Meta | ||
|---|---|---|
| Vida documentada del token de usuario | 60 días | "about 60 days" |
expires_in devuelto | 5184000 | 5183944 |
| Mecanismo de renovación | Reautenticación, o grant_type=refresh_token para partners MDP | grant_type=fb_exchange_token |
| Renovar con un token caducado | No | No |
| Opción sin caducidad | Ninguna documentada | Page access token |
El número de Meta es el raro. Su respuesta de ejemplo devuelve "expires_in": 5183944, que son 56 segundos menos de 60 días, y la redacción de Meta es deliberadamente laxa: "long-lived tokens last about 60 days." Meta añade después una advertencia que LinkedIn no hace, diciéndote que no dependas de la duración porque los tokens "may change without warning or expire early." El desglose completo está en la nota sobre el token de acceso de larga duración de Facebook.
La divergencia real está en lo que consigues al final de la cadena. Meta te deja derivar un Page access token a partir de un token de usuario de larga duración, y dice que esos "do not have an expiration date." LinkedIn no publica nada equivalente y afirma lo contrario en una sola línea de la sección de renovación: "To protect members' data, LinkedIn does not generate long-lived access tokens." LinkedIn está describiendo su propio token de 60 días como de corta duración.
Para quien construya contra las dos, la forma práctica es esta. En Meta puedes alcanzar una credencial que sobrevive a la sesión del miembro. En LinkedIn no, así que el aviso de reconexión es una característica permanente de la integración y no un estado de fallo, y programar publicaciones en LinkedIn de forma fiable significa planificar el día en que el miembro tenga que volver a pulsar Allow.
Preguntas frecuentes
¿Qué valor devuelve expires_in para un token de acceso de LinkedIn?
5184000 en el ejemplo publicado por LinkedIn, que son exactamente 60 días en segundos.
AdaptlyPost
Prueba gratis de 7 días
Analíticas multiplataforma
Bandeja Social
Asistente con IA
¿Puedes alargar un token de acceso de LinkedIn más allá de 60 días?
No. LinkedIn emite un token nuevo de 60 días, o bien mediante un refresh token si tu app es partner MDP aprobado, o bien pasando otra vez al miembro por la autorización.
¿Cuánto vale un código de autorización de LinkedIn?
30 minutos. LinkedIn escribe que "must be used immediately" y que un código caducado obliga a repetir todos los pasos anteriores.
¿Renovar reinicia la caducidad del refresh token?
No. LinkedIn afirma que el TTL del refresh token "remains the same as specified in the initial OAuth flow (365 days)" por muchas veces que lo uses.
¿Por qué dejaron de funcionar todos tus tokens de LinkedIn a la vez?
La causa más probable es un cambio de scope. LinkedIn invalida todos los tokens de acceso concedidos antes cuando tu app pide un scope distinto del ya concedido.
¿Cómo compruebas si un token está revocado o caducado?
Llama a POST https://www.linkedin.com/oauth/v2/introspectToken con tus credenciales de cliente y el token. El campo status devuelve revoked, expired o active.
¿Qué pasa cuando el refresh token de LinkedIn caduca junto con el access token?
El propio ejemplo de LinkedIn sitúa esto en el día 360, cuando al access token y al refresh token les quedan cinco días. En cuanto se cierra esa ventana, el miembro tiene que pasar de nuevo por la autorización, porque ningún grant type puede renovar un refresh token ya caducado. La página de refresh tokens no documenta ninguna vía de extensión para el propio refresh token.
¿Por qué la mayoría de las herramientas de publicación no pueden depender del token de dos piernas de LinkedIn?
El token de client credentials dura solo 30 minutos y LinkedIn lo documenta como no disponible para las Marketing APIs, justo la superficie de la que dependen las herramientas de programación y publicación. Su respuesta de ejemplo devuelve expires_in como una cadena entre comillas, "1800", en vez del entero que usa el flujo de tres piernas. Cualquier app que publique en nombre de un miembro tiene que usar el flujo de tres piernas en su lugar.
¿La cifra de 5.184.000 segundos de LinkedIn cuadra con su afirmación de 60 días?
Cuadra de forma exacta. La documentación de LinkedIn indica una vida de 60 días y el valor de ejemplo de expires_in, 5184000 segundos, equivale sin redondeo a exactamente 60 días. Esa precisión hace que resalte todavía más el desajuste entre minutos y segundos que aparece después en el campo refresh_token_expires_in de la misma documentación.
¿LinkedIn llega a emitir un token que nunca caduca?
LinkedIn no documenta ninguna opción así. Todo access token tiene una vida de 60 días y la propia empresa afirma que no genera access tokens de larga duración, a diferencia de Meta, que permite derivar un Page access token sin fecha de caducidad a partir de un token de usuario de larga duración.
Ponlo en práctica con AdaptlyPost
¿Te resultó útil este artículo?
¡Cuéntanos qué te parece!
Vernos más en Google
Un clic marca AdaptlyPost como fuente preferida y nuestros artículos aparecen más arriba en tus Noticias destacadas, el modo IA y los resúmenes con IA.
Antes de irte...
AdaptlyPost
Programa tu contenido en todas las plataformas
Gestiona todas tus cuentas de redes sociales en un solo lugar con AdaptlyPost.
Analíticas multiplataforma
Bandeja Social
Asistente con IA
Términos relacionados del glosario


Qué devuelve el endpoint content_publishing_limit de Instagram
El endpoint content_publishing_limit de Instagram devuelve quota_usage más un bloque config con quota_total 50 y quota_duration 86400 segundos.


Dónde está escrito realmente el límite de caracteres del texto alternativo de LinkedIn
Hay un solo número: el límite de caracteres del texto alternativo de LinkedIn es 4.086 en el campo altText de la API, y la app no publica ninguno.


Cómo initializeUpload de LinkedIn convierte un archivo en un URN de imagen
La acción initializeUpload de LinkedIn devuelve un URN de imagen y una URL de subida. El PUT, el post que referencia el URN y los errores de cada paso.
Artículos Relacionados


Detrás de la etiqueta de IA de TikTok hay dos etiquetas
La etiqueta de IA de TikTok llega de dos formas: una que aplicas tú con is_aigc y otra automática, por efectos de IA o C2PA, que no puedes quitar.


Qué concede realmente el scope instagram_business_content_publish
El scope instagram_business_content_publish permite a una app crear posts orgánicos en Instagram, y depende de instagram_business_basic en cada llamada.


Todos los límites que la API de Reels de Instagram impone a tu vídeo
Meta limita en la API de Reels de Instagram un reel a 15 minutos y 300 MB y solo acepta MOV o MP4. Aquí están todas las especificaciones y sus errores.

