Quantcast
Channel: PHP – unijimpe
Viewing all articles
Browse latest Browse all 10

Detectar si un usuario ha hecho Like en Facebook

$
0
0

En este artículo explicamos como detectar con PHP si un usuario ha hecho «Like» o «Me Gusta» en una página en Facebook, esto sirve para mostrar información diferente a los visitantes si es que son seguidores de nuestra página en Facebook.

Cada vez que uno carga un «Page Tab» este carga el contenido de nuestra página en un iframe y para mantener la comunicación Facebook le pasa el parámetro signed_request, veamos que contiene utilizando código PHP:

print_r($_REQUEST["signed_request"]);

El cual devuelve el siguiente resultado:

iP42q6CeqojKjTV8XSWFcbaShHFtqqreb93rPz2Byew.eyJhbGdvcml0aG0iOiJITUFDLVNI
QTI1NiIsImlzc3VlZF9hdCI6MTM5OTM1MjE0OSwicGFnZSI6eyJpZCI6IjU3MjY5NzYyNDYw
IiwibGlrZWQiOnRydWUsImFkbWluIjp0cnVlfSwidXNlciI6eyJjb3VudHJ5IjoicGUiLCJs
b2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX19

Como podemos el resultado está codificado y no se puede entender a simple vista. Pero gracias a las multiples contribuciones de los desarrolladores en internet, tenemos la función parse_signed_request que sirve para decodificar esta información.

function parse_signed_request($request) {
	list($sig, $pay) = explode('.', $request, 2); 
	$data = json_decode(base64_decode(strtr($pay, '-_', '+/')), true);
	return $data;
}

Utilizando esta función para decodificar la información que viene de Facebook:

$fbdata = parse_signed_request($_REQUEST["signed_request"]);
print_r($fbdata);

Este código devuelve el siguiente resultado:

Array
(
    [algorithm] => HMAC-SHA256
    [issued_at] => 1399352590
    [page] => Array
        (
            [id] => 57269762460
            [liked] => 1
            [admin] => 1
        )
    [user] => Array
        (
            [country] => pe
            [locale] => en_US
            [age] => Array
                (
                    [min] => 21
                )
        )
)

Ahora si podemos identificar que el resultado devuelto es un array el cual contiene un parámetro llamado liked que contiene el valor de «1» cuando se ha dado like a la página o vacío cuando no se ha dado like a la página.

Finalmente en base a toda la información podemos detectar si un usuario le ha dato like a una página:

function parse_signed_request($request) {
	list($sig, $pay) = explode('.', $request, 2); 
	$data = json_decode(base64_decode(strtr($pay, '-_', '+/')), true);
	return $data;
}

$fbdata = parse_signed_request($_REQUEST["signed_request"]);

if ($fbdata["page"]["liked"] == 1) {
	echo "LIKED";
} else {
	echo "NO LIKED";	
}

Para los usuarios que necesitan todo terminado les dejo el archivo con el ejemplo básico para descarga.

[download id=»61″ format=»2″]


Viewing all articles
Browse latest Browse all 10

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Ang Nobela sa “From Darna to ZsaZsa Zaturnnah: Desire and Fantasy, Essays on...


Lola Bunny para colorear


Dino Rey para colorear


Girasoles para colorear


Dibujos de animales para imprimir


Renos para colorear


Dromedario para colorear


Love Quotes Tagalog


Mga Patama Quotes at Pamatay Banat Quotes


RE: Mutton Pies (mely)


Gwapo Quotes : Babaero Quotes


Kung Fu Panda para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos para colorear de perros


Toro para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Long Distance Relationship Tagalog Love Quotes


Love Quotes Tagalog


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC