Nueva ley de telecomunicaciones

image

Ya terminé de leer las 250 y tantas hojas de la famosa ley de telecomunicaciones, ya que no quería dejarme llevar por la corriente y mentar madres de algo que desconozco, sobre todo despùes de haber visto videos y paginas web donde pintan a la ley de telecomunicaciones como el diablo, literalmente dicen lo siguiente:

“ Esa ley no debe de pasar por que atenta contra los derechos humanos”

“ Esa ley es anticonstitucional y no debe de aprobarse”

Etc, Etc,

La pregunta es, ¿en verdad esa nueva ley es taaaan mala? ¿debe de aprobarse?

Las respuestas a esas preguntas son:

No es 100% mala y  creo que si debe de aprobarse pero OJO, NO COMO ESTÀ EN ESTE MOMENTO.

La ley tiene cosas muy buenas y que creo que son para beneficio de todos nosotros como consumidores de servicios de telecom, como….

–       Eliminar el roaming nacional

–       Eliminar la Lada nacional

–       Eliminar la tarifa de interconexión

–       Bloquear las líneas celulares en prisiones

–       Imponer a Televisa el que sus competidores puedan usar sus antenas para emitir sus redes nacionales

–       Prohíbe  que las televisoras presionen a sus anunciantes para comprarles en exclusiva.

–       Impone el must carry – must offer

También tiene cosas que a mi parecer se están mal interpretando y están generando mucho ruido inecesario, aunque también creo que si una ley o un párrafo/artículo de esta se puede prestar a malas interpretaciones es mejor corregirla o eliminarla, no vaya a ser el diablo y una “Autoridad” la interprete a su conveniencia. Estos articulo son en especifico …

El 197 párrafo VII

Yo en lo personal no creo que este párrafo en verdad tenga la intención de bloquear el internet durante marchas y protestas. Pero el problema está en que deja habierta la posibilidad y eso ya sabemos que puede ser muy peligroso!!! De echo creo que el gobierno no debería de tener la facultad para bloquear o inhibir las comunicaciones mas que en caso de guerra o invasión extraterrestre

Artículo 145 Párrafo III

Aquí creo que está la parte mas confusa y mas manipulada por los detractores y críticos de la ley, es la que habla de la censura y de la neutralidad en la red, el párrafo dice claramente “a petición expresa del usuario o cuando medie orden de autoridad” y en otras partes de la ley cuando se refieren a esa autoridad dicen “debe mediar orden judicial”  y  la razón principal de este párrafo es combatir sitios de pederastia y otras actividades ilegales en la red.

Pero como dije antes, mejor cambiar este párrafo o quitarlo para que no venga una “Autoridad competente” a censurar a diestra y siniestra!!!

 Artículo 192

Aquí habla de guardar registros de las llamadas hechas por los usuarios por 2 años OJO solo los registros, más no el contenido, esto obviamente no va a poder ser por que requeriría una fuerte inversión de parte de las telefónicas no solo para el almacenamiento, si no para el monitoreo y las administración de la información.

Articulos  189, 190 y 191

Estos artículos son los que hablan de la geolocalización y  de la intervención de llamadas para “delincuencia organizada, delitos contra la salud, secuestro, extorsión y amenazas” lo malo es que no deja nada claro si es solo en estos casos o no y  dejarle esa posibilidad abierta a nuestras autoridades no creo que sea lo mejor, este es un párrafo que si creo que requiere dejar bien claro y sin lugar a ninguna duda!!!

La verdad es que la parte taaan mentada de el “pago por evento” o “internet VIP” que tanto mientan en twitter y Facebook ni me voy a tomar la molestia de comentarlo, creo que es algo que por cuestión de competencia y mercado queda descartado de ante mano.

Creo que eso es todo y como dije al principio, creo que la ley trae muchas cosas buenas para los usuarios, solo deben de pulirse esos “mal entendidos”  o ante la duda mejor eliminarlos.

Es importante dejar claro que la queja del publico en general es por la falta de confianza hacia nuestras autoridades, ¿como puedes estar tranquilo con la idea de que el gobierno guarde registro de donde estás tu o tus hijos sabiendo que el80% de los secuestradores son o fueron policías?, ¿como puedes confiar en que “la autoridad” interprete bien una ley sabiendo el nivel de corrupción que manejamos en este país?, en fin, es mucho lo que falta por hacer, lo que es un hecho es que la ley se va a aprobar, pero está en nosotros el hacer el suficiente ruido para que no se apruebe así como esta y que se pula lo suficiente para que sea una ley en beneficio de todos, pero para eso hay que informarse, hay que leer la ley y no dejarse influenciar!!!

PHP PDO

PDO es una libreria de PHP que nos permite abstraer ciertos conceptos de manejo de base de datos, las siglas de PDO significa PHP Data Objects (Objetos de Datos PHP), osea que PDO, nos evita utilizar funciones propias de cada driver de base de datos, por ejemplo si usas MySQL dependiendo de la libreria mysql o mysqli, para conectarte usaras mysql_connect(“localhost”, “usuario”, “contraseña”) o $mysqli = new mysqli(“localhost”, “usuario”, “contraseña”, “basedatos”), con PHP PDO. nos ahorramos todo esto

Conectar a una base de datos con PHP PDO

En PHP PDO utilizamos para conectarnos una cadena DSN, a través de ella definimos que motor usaremos, es algo similar al manejo en JAVA JDBC

$con = new PDO('mysql:host=localhost;dbname=test', $usuario, $contraseña);

Cerrar conexion con una base de datos

$con = null;

Listar registros utilizando PHP PDO

$resultado=$con->query('SELECT * from MITABLA');
foreach($resultado as $registro){
 echo "$registro[0] | $registro[1]
}

Esto nos dara algo similar a

Codigo | Descripcion
cod1 | producto 1
cod2 | producto 2
cod3 | producto 3

Utilizar prepared statements en PHP PDO

Una de las grandes utilidades de PHP PDO, es el uso de prepared statements, un prepared statement, es una sentencia que ha sido preformateada antes de su ejecución, utilizando prepared statements se agrega una capa extra de seguridad a nuestras aplicaciones, sobre todo para evitar inyecciones sql.

Insertar registros con prepared statements en PHP PDO

$sentencia = $con->prepare("INSERT INTO Producto (codigo, descripcion) VALUES (:codigo, :descripcion)");
$sentencia->bindParam(':codigo', $codigo);
$sentencia->bindParam(':descripcion', $descripcion);
 
// insertar una fila
$codigo = 'cod123';
$descripcion = "Nuevo Producto";
$sentencia->execute();
 
// insertar otra fila con diferentes valores
$codigo = 'cod456';
$descripcion = "Otro Producto";
$sentencia->execute();

Modificar o Actualizar registros con prepared statements en PHP PDO

$sentencia = $con->prepare("UPDATE Producto SET descripcion=:descripcion WHERE codigo:=codigo");
$sentencia->bindParam(':codigo', $codigo);
$sentencia->bindParam(':descripcion', $descripcion);
 
$codigo = 'cod123';
$descripcion = "Nuevo Producto 2";
$sentencia->execute();

Ejecutar Procedimientos Almacenados en PHP PDO

Otra gran ayuda de PHP PDO, es la ejecucion de procedimientos almacenados, para este ejemplo los parametros será pasados de acuerdo a su posicion.

$sentencia = $con->prepare("CALL sp_calcular_ventas_por_categoria_mes(?, ?)");
$sentencia->bindParam($mes);
$sentencia->bindParam($categoria);

Ejecutar una consulta LIKE con Prepared Statements en PHP PDO

Lo incluyo como un punto aparte por si a alguien le aparece un error al querer hacer una consulta similar.

Esta es la forma correcta de hacerlo

$sentencia = $con->prepare("SELECT * FROM Producto WHERE descripcion LIKE ? ");
$sentencia->bindParam("%$texto_buscado%");
$sentencia->execute();
$resultados=$sentencia->fetchAll();

Capturar errores en PHP PDO

Para capturar los errores se puede utilizar Try Catch, similar a como se usa en JAVA o .Net

try {
    $con = new PDO('mysql:host=localhost;dbname=test', $usuario, $contraseña);
    /*
      MAS CODIGO
    */
    $con = null;
} catch (PDOException $e) {
    print "Hubo un error: " . $e->getMessage() . "
";
    die();
}

SSH Tunnel en Linux o mac

¿Para que demonios sirve el tunnel?

la respuesta políticamente correcta es:

Un tunnel SSH sirve para garantizar la comunicación segura entre dos máquinas.

Los usos que se le pueden dar son muy diversos y tiene muchas ventajas como:

  1. El túnel SSH es una buena solución para navegar por internet en el caso que nos hallemos en Red local No segura.
  2. La navegación a través de un túnel SSH garantiza nuestra confidencialidad ya que nadie podrá conocer las páginas web que estamos visitando ni que estamos haciendo.
  3. La navegación a través de un túnel SSH garantiza la integridad de los datos transmitidos y recibidos ya que la probabilidad que alguien pueda modificar las datos que enviamos o recibimos es muy baja.
  4. Los túneles SSH son una buena solución para asegurar la comunicación entre 2 máquinas y para fortificar protocolos débiles como por ejemplo HTTP, SMTP. FTP, Telnet, etc.

Normalmente cuando estamos en una red pública, como en un cafe internet o un starbucks hay muchos usuarios conectados a la misma red y esto es un problema de seguridad importante porqué somos susceptibles de recibir ataques que nos pueden lanzar cualquiera de los usuarios que están conectados a la misma red local que nosotros.

hoy en día multitud de conexiones a Internet se realizan mediante el protocolo http. El protocolo http tiene la particular de transferir la información en texto plano sin cifrar.

Cualquier usuario que esté en esta misma red podrá interceptar nuestro tráfico fácilmente. Por lo tanto con un simple sniffer el atacante podría averiguar contraseñas de servicios que tenemos contratados o usamos, como por ejemplo el servicio de wordpress, servidores ftp, telnet, etc. Además el atacante podrá averiguar fácilmente a los sitios a los que nos estamos conectando.

Ahora, la realidad y para lo que más se usa un Tunnel SSH es:

Para vulnerar ciertas restricciones impuestas por nuestro ISP o por ejemplo también nos puede servir para vulnerar ciertas restricciones impuestas por proxies y firewall.

Un tunnel SSH basicamente se compone de dos máquinas, una que está fuera de nuestra red  (servidor SSH) y una local (normalmente la computadora del trabajo o nuestra laptop con la que vamos a navegar desde el starbucks).

Al crear un tunnel SSH cuando introduzcamos  cualquier dirección  en el navegador se enviará una petición http al servidor SSH con las siguientes particularidades:

  1. La petición http viajará por el túnel SSH que hemos establecido.
  2. Nuestra petición, y la totalidad de tráfico entrante y saliente estará completamente cifrado.

Por lo tanto aunque recibamos el ataque antes mencionado y se intercepte nuestro tráfico dentro de la red local comprometida, nadie podrá obtener nuestras credenciales, ni modificar el contenido de la petición ni robarnos información ya que la información que obtendrán estará completamente cifrada.

Por lo tanto con el túnel SSH estamos garantizando la integridad y confidencialidad del tráfico entre nuestra máquina y el servidor SSH que está fuera de nuestra red Local en una ubicación segura y no susceptible de ataques.

Una vez nuestra petición está en el servidor SSH tendrá que dirigirse al servidor web de la página que queremos conectarnos.

Si bien es cierto que en el último tramo (entre nuestro servidor SSH y el servidor web que queremos contactar) la información va a viajar en texto plano, las posibilidades de recibir algún tipo de ataque son muy bajas.

¿Como puedo configurar en tunnel SSH?

Primero que nada necesitamos una computadora fuera de la red local, no necesariamente tiene que ser la de nuestra casa, hay muchisimos proveedores de VPS Hosting en einternet y sus precios van desde $3.5 dolares mensuales y son muy fáciles de instalar y configurar.

Preparando el servidor SSH

1.- En el servidor SSH necesitamos instalar SSH. en mi caso es un servidor con ubuntu 13.

$ sudo apt-get install ssh.

2.- Editamos /etc/ssh/sshd_config, nos fijamos que tenga la opción AllowTcpForwarding yes y si no la tiene se la debemos de agregar.

3.- Reiniciamos el sshd

$ sudo service ssh reload

Listo! eso es todo del lado del servidor.

Del lado de la PC o laptop local, lo unico que necesitamos hacer es correr el siguiente comando.

ssh -D 8080 -C -N usuario@IP del servidor

El puerto 8080 puede ser cambiado por el que mas nos convenga, por ejemplo un puerto abierto en la red de la empresa donde trabajamos XD

En nuestro navegador o en las opciones de proxy globales de nuestra PC configuramos el SOCKS Proxy con la ip 127.0.0.1 y el puerto que usamos en el comando anterior.

Listo! ya con estos simples pasos todo el trafico de nuestra máquibna ira cifrado y de forma segura a través del firewall de nuestra empresa y podremos navegar sin restricciones y de forma segura por internet.

¿Antivirus para Android?

Ya perdí la cuenta de cuantas veces he tenido esta platica con amigos que tienen algún dispositivo con Android, ¿es necesario un antivirus para Android? yo digo que no, hasta la fecha no se ha detectado un solo virus para esta plataforma, vaya, no existen ni para Android ni para Iphone.

Lo que si existen son aplicaciones maliciosas que podrán mandar sms sin tu consentimiento, o hacer llamadas o usar funciones “sin que tu te enteres” y lo pongo entre comillas ya que esto solo pasará si al instalar dicha aplicación no ponemos atención a los permisos que otorgamos a la hora de instalarla, es decir, si te estas enterando pero estas decidiendo ignorarlo, pero no irá más allá, porque no puede y porque repito, no es un virus ni existen para esta plataforma y jamás destruirá tu teléfono ni lo dejará inservible ni nada por el estilo.

Por eso se me hacen vergonzosos casos como los de Kaspersky o Panda que dicen descubrir un “virus” llamado SMS.AndroidOS.FakePlayer.a, que es una archivo camuflado de app y que ni está en el market oficial!!!

Pero el caso que más llama mi atención es el de Virus Shield, una app que no hace absolutamente nada!!! y que por semanas estuvo en la lista de las 3 apps de pago mas descargadas (costaba casi 4 dolares), esta app es un completo fake que se aprovecha de la paranoia de los usuarios y de la necesidad que estos tienen de mas seguridad aunque ya la tengan.

Virus shield llegó a tener una calcificación de 4.7/5 gracias a una cantidad importante de comentarios y calificaciones positivas creadas falsamente, es increíble como este efecto placebo logro que Devian Solutions generará ganancias muy significativas con una app que lo único que hace es ocupar espacio en el teléfono y darnos la falsa seguridad de que al fin nuestro teléfono y los datos dentro de el están seguros.

Mientras esta paranoia no termine, seguirán existiendo desarrolladores que se aprovechen de esto y sigan generando apps de Antivirus para virus inexistentes.

Instalar Juniper Network Connect en Linux

Pues resulta que en el trabajo usamos una herramienta que le llaman teletrabajo, para conectarnos a la oficina cuando estamos trabajando desde casa, el Teletrabajo no es mas que una VPN que usa para conectarse el Jupiter Network Connect, para los que como yo quieran instalarlo y configurarlo, les dejo una pequeña guía de como hice yo para que funcionara en mi linux Mint.

1- Primero que nada hay que entender que como Network Connect es un software de 32 bits hay que tener instaladas las librerias de 32bits de C Runtime

sudo apt-get install libc6:i386 zlib1g:i386

Para poder usar el script para JNC necesitamos tener instalado Perl y Perl/GTK2

sudo apt-get install libgtk2-perl libwww-perl

Uno de los aspectos mas importantes de una conexión VPN ES QUE LOS DNS de tu computadora se resetean y son remplazados por los DNS de la VPN, en teoria cuando terminamos la sesión estos DNS regresan a su estado original, sin embargo he visto que esto no sucede siempre, para estos casos recomiendo respaldar el /etc/resolv.conf  para que en caso de ser necesario lo regresemos a su estado original.

2.- Descargar e instalar el script MSJNC

Descargar Script

Descargar el script en algun lugar en nuestro disco (ej. Downloads, home, Descargas, etc) para este ejemplo lo voy a poner en la carpeta /tmp, después de descargarlo hay que copiarlo a la carpeta   /usr/bin

chmod 755 /tmp/msjnc
sudo cp /tmp/msjnc /usr/bin

3.- Instalamos JAVA

Primero quitamos la versión anterior de JAVA

sudo apt-get update && apt-get remove openjdk-6-jre

sudo apt-get autoremove && apt-get clean

descargamos java de la página www.java.com

después instalamos la versión que descargamos:

32 Bits:

  sudo mkdir -p -v /opt/java/32

64-Bits:

  sudo mkdir -p -v /opt/java/64

descompactamos:

32 Bit:

 cd ~/Downloads
tar -zxvf jre-7u9-linux-i586.tar.gz
sudo mv -v jre1.7.0_* /opt/java/32

64-Bit:

 cd ~/Downloads
tar -zxvf jre-7u9-linux-x64.tar.gz
sudo mv -v jre1.7.0_* /opt/java/64

el último paso es dejar el nuevo JRE como default

32 Bit:

 sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/32/jre1.7.0_09/bin/java" 1

sudo update-alternatives --set java /opt/java/32/jre1.7.0_09/bin/java

64-Bit:

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/64/jre1.7.0_09/bin/java" 1

sudo update-alternatives --set java /opt/java/64/jre1.7.0_09/bin/java

4.- Instalamos Network Connect Software

Juniper Network Connect se instala en automático en cuanto entramos a la pagina del servidor al que nos queremos conectar.

Después de algunos segundos y seguramente de algunos re direccionamientos nos debe de aparecer la página para conectarnos

image

5.- Ejecutamos el script msjnc desde la terminal.

Listo! en mi caso solo tuve que ejecutar el script una sola vez y poner el URL de el servidor al que me quiero conectar como “Trusted” en la seguridad de JAVA.

Usando Sesiones en PHP

$_SESSION es un array especial que se utiliza para almacenar información a través de los pedidos de páginas que realiza un usuario durante su visita a nuestra página o aplicación web. Mientras que la aplicación no se cierre, si existe un valor dentro de la sesión, el mismo persistirá entre las páginas que visite el usuario.

Aunque puede haber muchos usuarios en nuestra página al mismo tiempo, cada uno posee su propia sesión; esto se logra ya que PHP otorga a cada sesión un ID único que permite que cada visitante pueda acceder únicamente a la sesión que le fue asignada.
Los valores de sesión se almacenan en el servidor, en vez de la computadora del usuario, lo cual hace que esos datos sean más seguros que los que podemos obtener de una cookie por ejemplo.

Hay que tener en cuenta que las variables se sesión se encuentran en casi todos los lenguajes actuales, por lo que todo lo que leeran en este post puede ser usado en cualquier otro lenguaje, no solo PHP

Usando sesiones

image

Antes de poder almacenar datos en la sesión, es necesario inicializar el manejo de sesiones. Esto se realiza al comienzo del código PHP y debe ser declarado antes que cualquier texto, código HTML o JavaScript. Para inicializar la sesión se llama a la función session_start().

session_start() inicia la sesión entre el usuario y el servidor y permite que los valores que sean almacenados estén accesibles en próximos scripts. Por ejemplo, en el siguiente código, vamos a obtener el valor que fue guardado en la sesión, con la clave “usuario”.

Este es un ejemplo muy básico que demuestra cómo almacenar y obtener los valores de la sesión. Creamos una clave en el arreglo de sesión y luego podemos acceder al valor que hemos almacenado allí. Todo esto se podrá lograr, mientras la sesión del usuario permanezca activa.

Finalizando una sesión

Tan importante como inicializar una sesión, es terminarla. Incluso teniendo en cuenta que la sesión es una forma de almacenar datos de manera temporal, es muy importante limpiar los datos de sesión para maximizar la seguridad (sobre todo cuando se trabaja con datos sensibles). También es importante tener en cuenta que el limpiar una sesión alivia la carga en el servidor.
Para limpiar un dato de una sesión se utiliza la función unset().

También es posible eliminar todos los datos de la sesión al mismo tiempo, utilizando la función session_unset()

Ambas funciones afectan a los datos de sesión, pero no a la sesión misma. La sesión sigue abierta y podemos agregarle nuevos datos a ella. Si lo que queremos es cerrar definitivamente una sesión (cuando por ejemplo, un usuario hace “log off”), tenemos que usar la función session_destroy().

Es altamente recomendable destruir la sesión cuando sabemos que la misma no va a ser utilizada más, en lugar de limpiar los datos con session_unset(). Si sólo eliminamos los datos, la sesión permanece activa y código malicioso podría inyectarle datos a la misma.

Seguridad

A pesar de lo simples que son las sesiones, existen formas de utilizarlas que nos pueden traer problemas. Vamos a ver unos ejemplos de como evitarlos:

Time-outs

Los time-outs (o tiempos de espera) son muy importantes si tus usuarios se autentican en tu aplicación. Por ejemplo, un usuario inicia sesión en una computadora pública (un ciber café) y luego se va sin cerrar la sesión. ¿Cómo hacer para que el próximo usuario de esa computadora no acceda a la cuenta del usuario anterior?
Para resolver el problema, podemos utilizar el siguiente código:

El código verifica que si no hubo actividad por más de 600 segundos (10 minutos), el pedido se redireccione a la página logout.php.

Regenerar el ID de sesión

La función session_regenerate_id() crea un nuevo ID único para la sesión del usuario actual. Esto se utiliza cuando ocurren acciones importantes de autenticación (como el inicio de sesión o la modificación de datos del usuario). Indicar un nuevo ID de la sesión hace a la aplicación más segura, reduciendo el riesgo de ataques llamados “Session Hijacking”.

Utilizar un almacenamiento permanente

Las sesiones son un almacenamiento temporal, se pueden cerrar y al hacerlo los datos se pierden. Es necesario, utilizar bases de datos, para todo lo que sabemos que vamos a necesitar más adelante.

Usar el API de Facebook en PHP

Ese fin de semana he tenido que dedicar un buen rato a lidiar con los caprichos de la API de Facebook, una API que a mi gusto tiene la peor documentación jamás vista. Por eso, y para que ustedes no sufran lo que he sufrido yo les dejo una pequeña explicación de cómo lo he hecho yo. seguramente como siempre pasa existen muchas maneras de hacer esto, pero esta es la que a mi me funcionó.

Lo primero que necesitaremos, evidentemente, es la API oficial de Facebook, que podemos descargar desde GitHub. Descomprimimos el archivo y lo subimos a nuestro servidor.

También necesitamos crear una aplicación en facebook, que será la encargada de llevar a cabo estas operaciones sobre nuestro perfil de usuario o pagina comercial. Para ello hay que dirigirnos al sitio web de desarrolladores de Facebook, donde tendremos que validar nuestra  cuenta,ya sea introduciendo nuestro numero celular para que nos  envíen un código de confirmación, o bien introduciendo nuestro número de cuenta. En serio, es escalofriante, pero ya sabemos todos como es Facebook.

Una vez que creemos la aplicación podremos consultar el id de la aplicación y la clave secreta de aplicación en esa misma página. Estos son dos de los datos que vamos a necesitar, así que hay que tenerlos a mano.

Lo siguiente que necesitamos es que nuestro usuario dé permisos a nuestra aplicación para poder interactuar con nuestra cuenta. Esto lo podemos hacer de forma sencilla utilizando una URL especialmente diseñada a tal efecto, que tendrá el siguiente aspecto:

https://graph.facebook.com/oauth/authorize?type=user_agent&
client_id=ID_APLICACION&
redirect_uri=http://www.facebook.com/connect/login_success.html&
scope=offline_access,manage_pages,publish_stream,create_event

donde:

  • client_id es el id de la aplicación, que habíamos apuntado en el paso anterior
  • redirect_uri es la página a la que vamos a redireccionar el navegador una vez hayamos dado los permisos a la aplicación
  • y scope es una lista de permisos, cuyos posibles valores podemos consultar en la documentación al respecto. El permiso offline_access es uno de los más importantes: permite que el token que nos va a pasar Facebook para autenticarnos no caduque, incluso cuando el usuario esté desconectado. Si quieres interactuar con las páginas que gestiona tu usuario, en lugar, o además de con tu propia cuenta personal, necesitarás requerir también el permiso manage_pages
image

Al cargar la URL en tu navegador y pulsar ‘Permitir’, si no ha pasado nada raro, Facebook debería redirigirte a la página que indicaste como valor de redirect_uri, añadiendo a esta un parámetro access_token, que es el que utilizaremos para identificarnos, y otro expires_in, que nos informa de que el token de acceso no va a caducar.

Para comprobar que todo funciona correctamente puedes intentar cargar la siguiente URL:

https://graph.facebook.com/me?access_token=ACCESS_TOKEN

Si el token de acceso es el adecuado, Facebook nos mostrará un objeto JSON con la información de nuestra cuenta de usuario. En caso contrario, mostrará un objeto JSON informando del error.

Ahora bien, si queremos interactuar con las páginas  que administremos, en lugar de con nuestra página personal, necesitaremos un access token distinto. Para obtenerlo preguntaremos a Facebook por la información de las distintas páginas y aplicaciones que administramos utilizando la URL:

https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN

Listo. Ahora sí, ya estamos preparados para empezar a jugar con la API de Facebook. Para publicar en el muro, crear eventos y subir imágenes en Facebook utilizaremos la clase del mismo nombre, a cuyo constructor le pasamos un array con el identificador de nuestra aplicación y su contraseña:

El método que nos interesa de esta clase es api, que normalmente tendrá como primer parámetro una cadena del tipo "/ID_USUARIO/SERVICIO" o "/ID_PAGINA/SERVICIO". El segundo parámetro es siempre el método a utilizar (POST o GET), y el tercero, un array con los argumentos necesarios para ese servicio.

Para publicar algo en el muro, por ejemplo, utilizaríamos como primer parámetro una cadena "/ID_USUARIO/feed" y como tercer parámetro, un array con claves message (el mensaje a publicar) y access_token, siendo este último el valor que obtuvimos anteriormente para identificar a nuestro usuario o alguna de las páginas de marca que administramos (OJO: el token de acceso del usuario no sirve para identificar a la página y viceversa).

Para terminar, les dejo una pequeña clase que les permitirá escribir en el muro, subir una foto o crear un evento.

Listo!!