Tutorial: Fanpage Facebook viral - upload imagen

cicklow

Admin
Beta
Verificado con documento
Verificación en dos pasos activada
Desde
30 May 2011
Mensajes
57
Crédito(s)
1
Puntos
25.567
En este nuevo tutorial aprenderán a agregar un tab viral a su fanpage, lo que hace este script es ver si el user es fan, luego si es fan redireccionamos a pedirle permisos (para subir foto y el email). Luego que el user da permsios se crea una foto con su nombre y un porcentaje aleatorio (ustedes le pondran el nombre que quieran, ejemplo que tan amoroso eres...)
PHP:
<?php
	@set_time_limit(0);

	$_PAGEID	= '46757812***'; //ID de su pagina
	$_APPID		= '13011****'; //ID de su aplicacion
	$_APPSE		= '10c******'; //Codigo secreto de la aplicacion
	$_PERMISOS	= 'email,read_stream,publish_stream,photo_upload'; //permisos a pedir
	$_MSERVER	= '//facebook.web.com/test/'; //url de donde se encuentra la aplicacion

	//Agregamos el SDK PHP de facebook
	require '../php3/facebook.php';

	//Cargamos la clase facebook y le avisamos que vamos a subir fotos.
	$facebook = new Facebook(array(
	  'appId' => $_APPID,
	  'secret' => $_APPSE,
	  'cookie' => true,
	  'fileUpload' => true,
	));
	$facebook->setFileUploadSupport(true);

	//Obtenemos Los datos del usuario
	$_R = _SR($_REQUEST['signed_request'],$_APPSE);

	//Verificamos si es fan
	if($_R['page']['liked']){
		//Es fan pero no obtenemos el codigo de autorizacion, entonces pedimos permisos.
		if($_R['oauth_token']==""){
			echo "<script>
  			var oauth_url = 'https://www.facebook.com/dialog/oauth/';
			oauth_url += '?client_id=".$_APPID."';
			oauth_url += '&redirect_uri=' + encodeURIComponent('https://www.facebook.com/pages/null/".$_PAGEID."/?sk=app_".$_APPID."');
			oauth_url += '&scope=".$_PERMISOS."'

			window.top.location = oauth_url;
			</script>";
		}else{
			//Ya tenemos los permisos
			echo 'Ya dio permisos';
			//obtenemos los datos del usuario
			$A = file_get_contents('https://graph.facebook.com/'.$_R['user_id'].'?access_token='.$_R['oauth_token']);
			$A = json_decode($A,true);
			/*echo '<pre>';print_r($A);*/

			//cargamos una imagen de corazon (pueden usar cualkiera)
			$image = imagecreatefromjpeg("corazon.jpg");
			$font = "b.ttf";
			//color negro
			$textcolor1 = imagecolorallocate($image,0,0,0);
			//colo rosa
			$textcolor2 = imagecolorallocate($image,191,46,141);

			//Vamos a usar el nombre del usuario y un numero aleatorio
			$text1 = $A['name'];
			$text2 = mt_rand(10,95).'%';

			//Agregamos el texto a la imagen
			imagettftext($image, 20, 0, 20, 50, $textcolor1, $font, $text1);
			imagettftext($image, 80, 0, 90, 160, $textcolor2, $font, $text2);

			//Creamos la imagen tmp_IDUSUARIO.jpg
			imagejpeg($image,'tmp_'.$A['id'].'.jpg',90);
			//liberamos memoria
			imagedestroy($image);
			//mostramos al user el resultado (no es obligatorio)
			echo '<img src="'.$_MSERVER.'tmp_'.$A['id'].'.jpg">';

			//Texto de la imagen (pueden colocar la url de su aplicacion para que sea mas viral)
			$_P['message'] = trim('Texto en la imagen');
			$_P['source'] = "@" . realpath('tmp_'.$A['id'].'.jpg');

			//iniciamos CURL
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/'.$_R['user_id'].'/photos?access_token='.$_R['oauth_token']);
			curl_setopt($ch, CURLOPT_POST, true);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $_P);
			$resultado = curl_exec($ch);
			$resultado = json_decode($resultado, true);
			curl_close($ch);

			//si obtenemos el id de la imagen es que se subio perfectamente
			if(is_array($resultado) && isset($resultado['id'])){
				echo '<br/>imagen subida con exito! ID='.$resultado['id'];
			}
			
		}
	}else{
		//aca pondremos un diseño para indicarle al user que no es fan y demas.
		echo 'No es Fan';
	}

	//funcion encargada de obtener los datos que nos da facebook
	function _SR($signed_request, $secret) {
        	list($encoded_sig, $payload) = explode('.', $signed_request, 2);

	        $sig = base64_url_decode($encoded_sig);
        	$data = json_decode(base64_url_decode($payload), true);

	        if(strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
        	        error_log('Unknown algorithm. Expected HMAC-SHA256');
                	return null;
	        }

	        $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
        	if($sig !== $expected_sig) {
	                error_log('Bad Signed JSON signature!');
        	        return null;
	        }

	        return $data;
	}

	function base64_url_decode($input) {
        	return base64_decode(strtr($input, '-_', '+/'));
	}
?>
Aclaración: este código solo funciona en fanpages!

Para agregar su aplicacion a una fanpage solo tienen que usar esta url:

Insertar CODE, HTML o PHP:
https://www.facebook.com/dialog/pagetab?app_id=APP_ID&next=APP_ID_URL
Esto permite agregar su aplicacion a cualquier fanpage de las que sean admin! :)

Descarga:
Insertar CODE, HTML o PHP:
http://www.mediafire.com/?8lae8sw914az2yy
Si no van a mostrar la imagen en pantalla (solo pondran un texto por ejemplo: la imagen fue publicada con exito en tu muro) usen esto:

PHP:
if(is_array($resultado) && isset($resultado['id'])){
	echo '<br/>imagen subida con exito! ID='.$resultado['id'];
	@unlink('tmp_'.$A['id'].'.jpg');
}
Para eliminar la img de su servidor luego de subir la imagen a facebook. Sino toca eliminarlas a mano o con un PHP+CRON
 
Última edición:

EnriqueColpo

Épsilon
Verificación en dos pasos desactivada
Desde
16 Ene 2012
Mensajes
893
Edad
29
Crédito(s)
2
Puntos
0
¿Con que aplicación añado el código?
 

giocr

Gamma
Verificación en dos pasos desactivada
Desde
24 Mar 2010
Mensajes
418
Crédito(s)
1
Puntos
381
La verdad no me queda muy claro esto... :ambivalence:
 

Desiigner

Gamma
Redactor
Verificación en dos pasos desactivada
Desde
24 Nov 2011
Mensajes
399
Crédito(s)
0
Puntos
13
Gracias por el aporte, ya mismo me pongo a probar :encouragement:
 

Mustang007

Eta
Verificación en dos pasos desactivada
Desde
3 Jun 2012
Mensajes
1.321
Crédito(s)
0
Puntos
1.014
¿tab viral a su fanpage? no entiendo, pero se ve bueno el tutorial. Gracias. :star2:
 

manxel

Eta
SEO
Verificación en dos pasos desactivada
Desde
25 Jun 2011
Mensajes
1.435
Crédito(s)
0
Puntos
258
Lo probare, pero nos gustaría ver algun DEMO o en donde se este usando, para entender un poco mas, ya que me quedo un poco desorientado.

Gracias! :encouragement:
 

cicklow

Admin
Beta
Verificado con documento
Verificación en dos pasos activada
Desde
30 May 2011
Mensajes
57
Crédito(s)
1
Puntos
25.567

Desiigner

Gamma
Redactor
Verificación en dos pasos desactivada
Desde
24 Nov 2011
Mensajes
399
Crédito(s)
0
Puntos
13
Tengo dos preguntas,
¿Como puedo saber cual es la id de mi pagina de fb?
¿En la linea #11 me pide el archivo facebook.php, donde consigo ese archivo?
 

cicklow

Admin
Beta
Verificado con documento
Verificación en dos pasos activada
Desde
30 May 2011
Mensajes
57
Crédito(s)
1
Puntos
25.567
Tengo dos preguntas,
¿Como puedo saber cual es la id de mi pagina de fb?
¿En la linea #11 me pide el archivo facebook.php, donde consigo ese archivo?
1- el id de tu pagina lo obtienes:
a- si tu fanpage aun no tiene nombre de usuario:
Insertar CODE, HTML o PHP:
http://www.facebook.com/pages/Test-Cicklow/467578126597743
el id es: 467578126597743

b- si tu fanpage tiene nombre de usuario se veria como esto:
Insertar CODE, HTML o PHP:
http://www.facebook.com/Test-Cicklow/
Para esto entras a tu fanpage, luego en el logo le das boton derecho, ver imagen y tendras una img con esta url (parecida)
Insertar CODE, HTML o PHP:
http://profile.ak.fbcdn.net/hprofile-ak-prn1/157914_321423734545905_1965590083_n.jpg
En donde el id de tu pagina es: 321423734545905
IDALBUM_IDPAGINA_IDFOTO


2- https://github.com/facebook/facebook-php-sdk

Saludos
 

Desiigner

Gamma
Redactor
Verificación en dos pasos desactivada
Desde
24 Nov 2011
Mensajes
399
Crédito(s)
0
Puntos
13
1- el id de tu pagina lo obtienes:
a- si tu fanpage aun no tiene nombre de usuario:
Insertar CODE, HTML o PHP:
http://www.facebook.com/pages/Test-Cicklow/467578126597743
el id es: 467578126597743

b- si tu fanpage tiene nombre de usuario se veria como esto:
Insertar CODE, HTML o PHP:
http://www.facebook.com/Test-Cicklow/
Para esto entras a tu fanpage, luego en el logo le das boton derecho, ver imagen y tendras una img con esta url (parecida)
Insertar CODE, HTML o PHP:
http://profile.ak.fbcdn.net/hprofile-ak-prn1/157914_321423734545905_1965590083_n.jpg
En donde el id de tu pagina es: 321423734545905
IDALBUM_IDPAGINA_IDFOTO


2- https://github.com/facebook/facebook-php-sdk

Saludos
Gracias por la información, olvide comentar que ya tenia nombre de usuario :witless:
 

Joker

Beta
Social Media
Verificación en dos pasos desactivada
Desde
10 Jun 2012
Mensajes
61
Crédito(s)
0
Puntos
0
Vaya amigo, gracias por el aporte. Muy bueno. :encouragement:
 

edizzz

Gamma
Verificación en dos pasos desactivada
Desde
5 Oct 2012
Mensajes
172
Edad
32
Crédito(s)
1
Puntos
125
me salio este error mira Parse error: syntax error, unexpected T_VARIABLE in /homepages/23/d4319*****.com/tab.php on line 72
 

FRMIG

Gamma
Marketing
Verificación en dos pasos desactivada
Desde
5 Ago 2011
Mensajes
246
Edad
24
Crédito(s)
0
Puntos
-44
Gracias, muchas gracias.! :welcoming:
 

martodvo

Gamma
Verificación en dos pasos desactivada
Desde
9 Dic 2010
Mensajes
155
Edad
68
Crédito(s)
0
Puntos
27
Gracias por el code.

No entendi mucho pero voy a volver a reelerlo a ver que pasa sino te contacto :D
 

Arriba