diciembre 29, 2014

Manejo de Tokens de acceso en facebook.

¿Qué es un token de acceso?


Un testigo de acceso es básicamente un largo ID que se requiere para hacer llamadas a la 
API de gráficos . El token identifica lo siguiente:
  • La aplicación de Facebook ID que está haciendo la solicitud
  • El ID de usuario de Facebook que la solicitud se asocia con (si procede)
  • El ID de página que la solicitud se asocia con (si es aplicable)
También contiene información sobre el tiempo en segundos hasta que el token de acceso expira y algunas veces contiene un identificador llamado machine_id que identifica al equipo que solicitó el token de acceso. El machine_id se utiliza para verificar la autenticidad de los token de acceso. 
Corta duración vs tokens de acceso de larga vida
Por defecto, cuando usted solicita un token de acceso de usuario, Facebook devolverá un token de acceso de corta duración que expirará en 2 horas. O como los de documentación oficiales estados ", sobre una o dos horas". No estoy seguro de la razón de la explicación tiempo difusa.
Este corto periodo de tiempo podría ser problemático si usted planea almacenar el token de acceso de la base de datos y utilizarla para realizar solicitudes para graficar más tarde. Así que tendrás que intercambiar el token de acceso de corta duración para un token de acceso de larga vida que será válida por 2 meses antes de que caduque.
Con el fin de ampliar su token de acceso de corta duración con un token de acceso de larga vida, tendrás que utilizar el nuevo AccessToken entidad desde el SDK (ver más abajo).

Tipos de tokens de acceso

Hay un número de diferentes tokens de acceso que pueden ser usados ​​para interactuar con el gráfico. Para mayor comodidad, Facebook ofrece una herramienta de token de acceso que enumera tokens de acceso para las diferentes aplicaciones que administran. También hay un acceso depurador simbólico que decodificar una señal de acceso y devolver los datos identificativos subyacentes.
Pero no todos los tokens de acceso son los mismos. Dependiendo de lo que quieres hacer, tendrás que enviar una señal diferente con su solicitud a Graph.

Token de acceso de usuario

Quizás el más bien conocido y token de acceso ampliamente utilizado es el token de acceso de usuario. Este es el símbolo de acceso que desea utilizar al realizar llamadas a Gráfico en nombre de un usuario específico.
Un token de acceso de usuario se ve así:
CAABwiWr8tH8BAGKCYOIgoMwJ9T0ZAmJ6KJJNcUjzmftdAOCx1RgzxZAjzGB1s37DDCEoy9r2VgrCLffCTvEGe9cZBZPAwBhygi2ZpTubZC2eCzMe16CLP4Wlc9bStWGwUNYoLEl4dXu4uJl2CCLiFXEtP4GKDv0Gk4s35iXty77KZBx5NYBCcEUs98WjdJQcXLsb1X2ZBaMTW2AZDZN
Y un token de acceso de usuario que permitirá:
  • Obtener información sobre el usuario.
  • Publicar / actualizar / borrar en nombre del usuario suponiendo que el usuario ha concedido los permisos adecuados .
  • Tokens de larga duración se pueden utilizar para generar nuevos tokens de acceso de larga duración utilizando un código .

El ayudante más común es la FacebookRedirectLoginHelper que obtener un token de acceso a través de un enlace de redirección.

session_start ();
 usar Facebook \ FacebookRedirectLoginHelper;
 usar Facebook \ FacebookSDKException;

$ Ayudante = nuevo FacebookRedirectLoginHelper ( '{callback-url}' , '{app-id}' , '{app-secreta}' );

tratar {
     $ session = $ ayudante -> getSessionFromRedirect ();
} catch (FacebookSDKException $ e ) {
     $ session = nulo ;
}

si ( $ session ) {
   // El usuario ha iniciado sesión, obtener la entidad AccessToken. 
  accessToken $ = $ session -> getAccessToken ();
   . // Cambio de la señal de corta duración, como una señal de vida larga 
  $ longLivedAccessToken = $ accessToken -> extend ();
   // Ahora almacenar el token de larga vida en la base de datos 
  //. . . $ Db-> Tienda ($ longLivedAccessToken); 
  // realizar llamadas a Gráfico con el símbolo de larga vida. 
  //. . . 
} otro {
   echo  '<a href = "' . $ ayudante -> getLoginUrl (). '"> Entrar con Facebook </a>' ;
}

Página token de acceso

Un token de acceso de la página se ve como un token de acceso de usuario. También identifica el ID de la página de destino. Esta es la señal que desea utilizar para realizar acciones en nombre de una página específica, tales como:
  • Administrar la información sobre el perfil de la página.
  • Publicar / actualizar / borrar en nombre de la página.

La obtención de un token de acceso de la página

Tokens de acceso Página se pueden obtener de un usuario que tenga privilegios de administrador para la página de destino y también ha autorizado su aplicación con lamanage_pages permiso .
utilizar Facebook \ FacebookRequest;

// Suponiendo $ session se obtuvo de un ayudante ...

// Obtener una lista de páginas que este usuario admins; requiere "manage_pages"

  -> GetGraphObject ()
  -> AsArray ();

foreach ( $ PageList  como  $ page ) {
   $ pageAccessToken = $ page [ 'señal_acceso' ];
   // tienda $ pageAccessToken y / o 
  // enviar solicitudes a Graph en nombre de la página 
}
Las credenciales de acceso de la página que se devuelven de la / me / cuentas de punto final vencerá por omisión si utilizó un token de acceso de usuario de corta duración para obtenerlos. Si ha utilizado una muestra longevo acceso de los usuarios para obtenerlos, el/ me / cuentas de punto final volverá credenciales de acceso de la página que nunca caducan.
También te darás cuenta de las permanentes array se devuelve que lista los permisos administrativos que el usuario tiene en esta página.

Token de acceso App

Un token de acceso de aplicación se ve así:
1234567890 | EnEYhJBbcc-gm84CeUivNgC0bZZ
El token se compone de el ID de aplicación y el secreto aplicación o un hash válido del secreto aplicación. Un token de acceso de aplicación le permitirá gestionar la información de la aplicación, incluyendo:
  • Usuarios de prueba
  • Usuarios baneados
  • Actualización en tiempo real suscripciones
  • Los roles de usuario
  • Y mucho más ...

La obtención de un token de acceso de aplicaciones

Acceso App tokens no requieren ninguna llamada al Facebook de obtener. Usted puede hacer un token de acceso concatenando el ID de aplicación con el secreto aplicación y el uso de un delimitador de tubería.
{App-id} | {app secreto}
Acceso App tokens no caducan. Y ya que contienen el secreto aplicación, usted nunca quiere utilizarlos en el lado del cliente.

Extensión de un token de acceso de corta duración

Una vez que obtenga una válida FacebookSession con la redirección , lienzo o javascript ayudante, puede utilizar getAccessToken () para obtener el AccessToken entidad. Desde el primer testigo de acceso que usted recibe será de corta duración, puede fácilmenteextender () a hacer un token de acceso de larga vida.
utilizar Facebook \ FacebookSDKException;

// Suponiendo $ session se obtuvo de un ayudante ...

// Obtener la entidad AccessToken. 
accessToken $ = $ session -> getAccessToken ();

tratar {
   // Intercambiar el token de corta duración por un valor simbólico de vida larga. 
  longLivedAccessToken $ = $ accessToken -> extend ();
} catch (FacebookSDKException $ e ) {
   echo  "Error extiende token de acceso de corta duración: ' . $ e -> getMessage ();
   salida ;
}

// Ahora almacenar el token de larga vida en la base de datos 
//. . . $ Db-> Tienda ($ longLivedAccessToken); 
// Realizar llamadas para graficar con el token de larga vida. 
//. . .

Obtención de información detallada acerca de un token de acceso

El Graph API tiene una utilidad / debug_token punto final que usted puede utilizar para obtener información acerca de un token de acceso. Y el SDK soporta esta funcionalidad sacarlo de la caja.
utilizar Facebook Entidades \ \ AccessToken;
 usar Facebook \ FacebookSDKException;

$ AccessToken = nuevo AccessToken ( '{my-access token}' );

tratar {
   // Obtener información sobre el token 
  // Devuelve un objeto GraphSessionInfo 
  $ accessTokenInfo = $ accessToken -> getInfo ();
} catch (FacebookSDKException $ e ) {
   echo  "Error al obtener acceso a información del token: ' . $ e -> getMessage ();
   salida ;
}

// Volcado de la información sobre el token 
var_dump ( $ accessTokenInfo -> asArray ());
Por supuesto, si lo que desea es depurar una ficha mientras estás desarrollando tu aplicación, siempre se puede utilizar el conveniente depurador proporcionado por Facebook.

Las mejores prácticas para el mantenimiento de tokens de acceso de larga seres a través del tiempo

Si su aplicación es el envío de solicitudes con un token de acceso de larga vida a la Graph API, en nombre de sus usuarios con frecuencia, su aplicación está en riesgo de ser marcado como spam. Para evitar esto, se puede utilizar un código para obtener nuevas fichas de larga vida .
El flujo básico es algo como esto:
  1. Recuperar el token de acceso de los usuarios de larga vida de su base de datos.
  2. Utilice el token de larga duración para solicitar un código.
  3. Utilice el código de solicitar un nuevo token de acceso de larga vida.
  4. Utilice el nuevo token de acceso de larga duración para realizar llamadas a Graph en nombre del usuario.
use Facebook\FacebookSession;
 use Facebook\FacebookRequest;
 use Facebook\Entities\AccessToken;
 use Facebook\FacebookSDKException;

$ LongLivedAccessToken = nuevo AccessToken ( '{vivido largo-access token}' );

tratar {
   // Obtener un código de un token de acceso de larga vida 
  $ code = AccessToken :: getCodeFromAccessToken ( $ longLivedAccessToken );
} catch (FacebookSDKException $ e ) {
   echo  "Error código conseguir: ' . $ e -> getMessage ();
   salida ;
}

tratar {
   // Obtener un nuevo token de acceso de larga duración a partir del código 
  $ newLongLivedAccessToken = AccessToken :: getAccessTokenFromCode ( $ code );
} catch (FacebookSDKException $ e ) {
   echo  "Error al obtener un nuevo token de acceso de larga vida: ' . $ e -> getMessage ();
   salida ;
}

// Hacer llamadas Graficar usando $ shortLivedAccessToken 
$ session = nuevo FacebookSession ( $ newLongLivedAccessToken );

$ Request = nuevo FacebookRequest ( $ session , 'GET' , '/ me " );
 $ userData = $ request -> execute ()
  -> GetGraphObject ()
  -> AsArray ();

var_dump ( $ userData );
Si quieres bucear más profundo, revisar la documentación token de acceso oficial en Facebook.

0 comentarios:

Publicar un comentario