¿Cuáles son los pasos para obtener un token de larga duración para publicar en una página de fans de Facebook desde un servidor?

Tengo una página de negocios en Facebook (conocida como Fan Page en Facebook vernáculo).

Deseo post to that Page cada vez que un usuario realice una determinada acción en mi aplicación. Quiero publicar como la página en sí en lugar de como un usuario (es decir, desde mi cuenta personal). La publicación vendrá de mi servidor externo (estoy usando restFB).

Pasé por los pasos para autorizar mi cuenta personal con los permisos apropiados de manage_pages para la Página. También obtuve un token de acceso para la página. Incluso he podido publicar en esa página como la página que quería. El problema es que el token que recibo (a través de sus herramientas de desarrollador gráfico explorador) tiene una caducidad de una hora. Necesito que dure mucho más tiempo que eso, preferiblemente para siempre.

He buscado en Internet, incluida SO la respuesta, y la mayoría de las publicaciones apuntan a los horrendos documentos de FB o hacen vagas referencias para enganchar mi aplicación externa a una aplicación de Facebook y publicarla. Intenté hacer que eso funcionara, pero estoy confundido por todo el proceso, francamente (¿qué es una dirección de callback, por ejemplo?).

De todos modos, me gustaría ver instrucciones paso a paso en inglés sencillo sobre getting a long lasting access token que pueda usar para publicar desde una aplicación en una página de fans de Facebook.

Por favor, no consulte la documentación de FB. Es terrible. He pasado por eso una docena de veces al menos.

Gracias.

Aquí hay algunos pasos que puede seguir para obtener un token que nunca expira para su página de fans:

  1. En primer lugar, debe obtener el token de acceso de usuario de larga duración (que expira en 2 meses). Para obtener esto, haga la siguiente llamada:

     GET /oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token} 

    Más detalles aquí . Avísame si tuviste alguna dificultad con esto.

  2. Obtenga el token de acceso que nunca expira para su página utilizando el token que obtuvo en el paso anterior (no el token normal, esa es la principal diferencia aquí):

     $facebook->api("/PAGE_ID?fields=access_token"); 

El concepto es que, para obtener el token de página de larga duración, debe usar el token de usuario de larga duración al realizar la llamada.

@Shadowfax es completamente correcto. Solo para completar el flujo de trabajo:

  1. Obtenga el usuario a corto plazo access_token con el inicio de sesión de Facebook y con el permiso manage_pages .
  2. Envíe este usuario a corto plazo access_token a su servidor
  3. Desde el servidor, realice la solicitud @Shadowfax:

    GET /oauth/access_token? grant_type=fb_exchange_token&client_id={your-app-id}& client_secret={your-app-secret}&fb_exchange_token={short-lived-user-access_token}

    con host graph.facebook.com y el puerto 443 .

    Debe realizar esta solicitud desde el servidor porque contiene la clave secreta de su aplicación.

  4. Desde el servidor, ahora puedes consultar facebook reemplazando el usuario access_token por esta versión de larga duración

  5. Desde el servidor, obtenga la página access_token utilizando su usuario de larga duración access_token, ya sea mediante la consulta de la cuenta de usuario:

    GET /{user-id}/accounts?access_token={long-live-token}

    Obtendrá todas las páginas del usuario con su id y access_token.

    O puede consultar directamente la página específica si ya conoce su page_id

    GET /{page-id}/?fields=access_token&access_token={long-live-token}

Como dijo @Shadowfax, este token de larga duración de la página durará para siempre, siempre y cuando el usuario (usted) no revoque el permiso de su aplicación.