2012-01-25 26 views
13

¿Los tokens de acceso a la aplicación Facebook caducan? Estos tokens son diferentes a los tokens de USUARIO; se adquieren de esta manera:Aplicación de Facebook (NO usuario) vencimiento del token de acceso

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={0}&client_secret={1}) 

como se describe en la sección de aplicaciones de sesión del documento en http://developers.facebook.com/docs/authentication/.

¿Hay alguna circunstancia en la que se invalidarán?

NB: Esta NO es una pregunta sobre los tokens de acceso de USUARIO (que están claramente documentados). Hubo una pregunta idéntica http://facebook.stackoverflow.com/questions/7322063/does-app-login-access-token-expire erróneamente cerrada como duplicado de otra pregunta sobre los tokens de acceso de USUARIO.

Respuesta

4

Sé que una condición que hará que se vuelvan inválidas es restablecer el secreto de la aplicación con la herramienta de desarrollador de Facebook.

No sé si usar el método OAuth para producir un token de aplicación provocará que caduque. Sin embargo, si escanea PHP SDK de Facebook, usted puede notar que una ficha de aplicaciones que no caduca se hace por APP_ID concatenación y secreto:

/** 
    * Returns the access token that should be used for logged out 
    * users when no authorization code is available. 
    * 
    * @return string The application access token, useful for gathering 
    *    public information about users and applications. 
    */ 
    protected function getApplicationAccessToken() { 
    return $this->appId.'|'.$this->apiSecret; 
    } 

ADVERTENCIA: Nunca usaría esto en el cliente de código, ya que sería publicar su App secreta. Sin embargo, en un entorno de servidor de confianza, parece que es el camino a seguir.

Para probar esto, fui a la herramienta OpenGraph y borré mi token de acceso y escribí el valor concatenado del ejemplo de código. Accedí a continuación las ideas de mi aplicación para verificar que funcionaría:

<APP_ID>/insights/application_active_users 
+0

Gracias, funciona. Pero este método de obtener un token de acceso a la aplicación es un método protegido que no forma parte de la API pública. No puedo confiar en que no cambie y lo use en un sitio en vivo con millones de usuarios (Facebook es notorio por los cambios públicos de API rompiendo, mucho menos algo como esto). Parece que el token de acceso a la aplicación adquirido de la URL (mencionado en la pregunta) expira; de la noche a la mañana empecé a ver excepciones en mi prueba registros de entorno: Error al validar el token de acceso: la sesión ha expirado en el tiempo de Unix 1327539600. El tiempo Unix actual es 1327605009. – eugen

+0

Es muy poco probable que Facebook introduzca bruscamente un cambio radical con un SDK sancionado. Por lo general, Facebook proporcionará una hoja de ruta para rompiendo cambios todo con sus bibliotecas autorizadas. Compruebe https://developers.facebook.com/roadmap/ a menudo. – thesmart

+0

Por desgracia, de la experiencia previa de primera mano, es probable que sea testigo de cambios en la API de Facebook. Acabo de mencionar uno de arriba: el token de acceso a la aplicación expira, aunque la documentación no lo indica. Peor aún, el código de error devuelto es 0 (es decir, ¡éxito !?). Los códigos de error se deben considerar como parte de la API; de lo contrario, los desarrolladores se quedan sin garantías. Por cierto, ¿hay algún lugar con una lista definitiva y sin cambios de códigos de error de Facebook? – eugen

4

Creación de un APP_ACCESS_TOKEN es muy fácil. Puede utilizar el Ejemplo App ID/API Key y App secret

access_token = YOUR_APP_ID|YOUR_APP_SECRET 

: 1234587968 | bghyuifjk3438483249235903502035023504305

+0

Gracias, lo sé. La pregunta era si estos tokens caducan (y el comentario posterior que hice parece que no devuelve un código de error cuando lo hacen). – eugen

+0

No es cierto, la última parte no es secreta de la aplicación. Es posible que desee volver a comprobarlo. –

+0

Por favor, verifique la fecha en mi comentario, por favor. – tildy

27

por la Facebook documentation:

Una aplicación token de acceso se ha firmado con su aplicación en secreto y no han expirado; se invalidará si vuelve a escribir/restablece su aplicación secreta.

0

Para mí, la respuesta es no encontrar un símbolo que no expire, (ya que no me fío de Facebook), pero para coger el testigo de expirar y restablecer sin ocupar mi tiempo a los usuarios. Encontré esto y pensé que querrías echarle un vistazo.

"Para asegurar la mejor experiencia para sus usuarios, la aplicación tiene que estar preparado para detectar errores de los escenarios anteriores. El siguiente código PHP que muestra cómo manejar estos errores y recuperar un nuevo token de acceso.

Cuando redirige al usuario al cuadro de diálogo de autenticación, el usuario no recibe los permisos si el usuario ya ha autorizado su aplicación. Facebook le devolverá un token de acceso válido sin ningún diálogo del usuario. Sin embargo, si el usuario ha desautorizado su aplicación entonces el usuario deberá volver a autorizar su aplicación para que obtenga el access_token."Recurso: https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/

Cuestiones relacionadas