facebook-graph-api obtener - Tokens de acceso a la página de Facebook:¿caducan?




access page (8)

Estoy construyendo una aplicación que permite a los usuarios administrar sus páginas de fans de Facebook. Esto requiere los siguientes dos tokens de acceso:

  1. Un token de acceso de usuario
  2. Un token de acceso a la página

Estoy bastante familiarizado con los tokens de acceso de usuario, pero no con los tokens de acceso a la página.

¿Alguien sabe por cuánto tiempo el token de acceso a la página sigue siendo válido? Todo lo que puedo encontrar en el sitio web de Facebook es este breve párrafo , que no menciona nada sobre su vencimiento.

¿Puedo asumir que si offline_access el token de acceso de usuario con el permiso de acceso sin offline_access el token de acceso a la página también durará indefinidamente (a menos que el usuario cambie su contraseña o desautorice mi aplicación manualmente)?

Pregunto porque quiero saber con qué frecuencia debo consultar la API Graph de Facebook y adquirir tokens de acceso a la página. ¿Debería simplemente solicitarlos una vez cuando el usuario se registra? ¿O debería solicitarlos en cada Llamada API en caso de que cambien continuamente? ¡El último es obviamente más agotador!


Answers

Los tokens de página caducan cuando el token de acceso caduca para el usuario desde el que se generó el token de página. Editar 6.28.2013: si extiende el token de acceso de usuario y obtiene un nuevo token de acceso a la página para el usuario, ese token de página no caducará a menos que el usuario lo desautorice.

El acceso fuera de línea ahora se ha desaprobado, pero se le permite extender un token de acceso para que dure 60 días. Si extiende el token de acceso del usuario, los tokens de página generados a partir de esa cuenta de usuario también tendrán su vencimiento extendido para que coincida con la fecha de vencimiento (editado el 6.28.2013). El valor de los tokens de página puede cambiar después de la extensión, así que asegúrese de obtener nuevos tokens de página de la conexión del gráfico de /accounts usuario después de extender el token de usuario.

Puede continuar ampliando estos tokens de acceso una vez por día. Por lo tanto, debe regenerar los tokens de acceso cada día que el usuario interactúa con su aplicación.

Consulte https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens https://developers.facebook.com/docs/facebook-login/access-tokens/#extending https://developers.facebook.com/docs/facebook-login/
https://developers.facebook.com/roadmap/offline-access-removal/ https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/


El token de acceso a la página de Facebook es muy similar al token de acceso del usuario, excepto que "suplanta al usuario" como el administrador de la página y permite administrarlo [se requiere el permiso manage_page].

Si se concede el permiso Offline_access a la aplicación, la página access_token NO caducará (a menos que el usuario cambie su contraseña o desautorice manualmente la aplicación)

Use el siguiente enlace para verificar los detalles de un token de acceso emitido.

https://developers.facebook.com/tools/debug/


Los tokens de acceso a la página han caducado cuando expiró el token de acceso del usuario. Puede extender el token de acceso de usuario para que dure hasta 60 días para que el token de acceso a la página dure mucho tiempo.

Echa un vistazo a mi blog y sigue las instrucciones paso a paso para obtener un token de acceso ampliado y obtener los tokens de acceso a la fanpage también.


La documentación de Facebook sobre el tema (tokens de acceso a página de larga duración) no coincide con lo que sucede en la realidad. La documentación afirma que los tokens de acceso a la página adquiridos a través de tokens de acceso de usuario extendidos / de larga duración nunca caducarán. Sin embargo, en realidad, estos tokens de acceso a la página caducan en 60 días.

Vea la falla de Facebook: http://developers.facebook.com/bugs/461517520524921


No estoy seguro de si Facebook ha realizado cambios para corregir estos errores o no, pero parece que los tokens de acceso de los usuarios no caducan una vez que se otorgan los tokens de acceso a la página para el usuario. De acuerdo con mis pruebas, el flujo es más o menos así:

  1. Token de acceso de usuario solicitado -> token de usuario de 60 días se emite
  2. Se solicitaron tokens de acceso a la página -> tokens de acceso a la página emitidos que nunca caducaron y el token inicial de acceso del usuario se actualiza para que nunca caduque también.

Espero que esto aclare algo de la confusión aquí. He probado esto con muchos usuarios diferentes en nuestra aplicación y veo lo mismo cada vez.

Si nunca se solicitan tokens de acceso a la página, el token de acceso de usuario original caducará después de 60 días.


  • El token de acceso a la página predeterminado tiene una vida corta, por lo que caducan en 1 o 2 horas. Si desea que dure más tiempo, debe extender el token de acceso de corta vida a uno de larga duración, de modo que dure aproximadamente 2 meses.
  • El permiso offline_access ahora está en desuso.
  • El token de acceso no caduca cuando un usuario cambia es una contraseña.

En otra pregunta, explico cómo ampliar el token de acceso a la página .



El token facebook acess también es similar "1249203702 | 2.h1MTNeLqcLqw __. 86400.129394400-605430316 | -WE1iH_CV-afTgyhDPc"

si extraes la parte media usando | para dividir obtienes

2.h1MTNeLqcLqw __. 86400.129394400-605430316

luego dividir de nuevo por -

la última parte 605430316 es la identificación de usuario.

Aquí está el código C # para extraer la identificación del usuario del token de acceso:

   public long ParseUserIdFromAccessToken(string accessToken)
   {
        Contract.Requires(!string.isNullOrEmpty(accessToken);

        /*
         * access_token:
         *   1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc
         *                                               |_______|
         *                                                   |
         *                                                user id
         */

        long userId = 0;

        var accessTokenParts = accessToken.Split('|');

        if (accessTokenParts.Length == 3)
        {
            var idPart = accessTokenParts[1];
            if (!string.IsNullOrEmpty(idPart))
            {
                var index = idPart.LastIndexOf('-');
                if (index >= 0)
                {
                    string id = idPart.Substring(index + 1);
                    if (!string.IsNullOrEmpty(id))
                    {
                        return id;
                    }
                }
            }
        }

        return null;
    }

ADVERTENCIA: La estructura del token de acceso no está documentada y es posible que no siempre se ajuste al patrón anterior. Úselo bajo su propio riesgo.

Actualización debido a cambios en Facebook. El método preferido para obtener el ID de usuario del token de acceso cifrado es el siguiente:

try
{
    var fb = new FacebookClient(accessToken);
    var result = (IDictionary<string, object>)fb.Get("/me?fields=id");
    return (string)result["id"];
}
catch (FacebookOAuthException)
{
    return null;
}




facebook facebook-graph-api access-token facebook-page