Tutorial: Fanpage Facebook viral - upload imagen

cicklow

Admin
Beta
Verificado con documento
Verificación en dos pasos activada
Desde
30 May 2011
Mensajes
83
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
30
¿Con que aplicación añado el código?
 

giocr

VIP
Delta
SEO
Verificación en dos pasos desactivada
Desde
24 Mar 2010
Mensajes
509
La verdad no me queda muy claro esto... :ambivalence:
 

Desiigner

Gamma
Redactor
Verificación en dos pasos desactivada
Desde
24 Nov 2011
Mensajes
402
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.322
¿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.442
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:
 

Desiigner

Gamma
Redactor
Verificación en dos pasos desactivada
Desde
24 Nov 2011
Mensajes
402
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
83
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
402
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
Vaya amigo, gracias por el aporte. Muy bueno. :encouragement:
 

byNiko

Dseda
Social Media
Verificación en dos pasos desactivada
Desde
20 Ago 2012
Mensajes
1.051
Edad
27
Como siempre, sos groso.
 

edizzz

Gamma
Verificación en dos pasos desactivada
Desde
5 Oct 2012
Mensajes
173
Edad
33
me salio este error mira Parse error: syntax error, unexpected T_VARIABLE in /homepages/23/d4319*****.com/tab.php on line 72
 

Peisithanatos

Eta
SEO
Verificación en dos pasos desactivada
Desde
13 Sep 2012
Mensajes
1.473
Edad
33
A mí directamente no me deja agregar la aplicación.
 

FRMIG

Gamma
Marketing
Verificación en dos pasos desactivada
Desde
5 Ago 2011
Mensajes
246
Edad
24
Gracias, muchas gracias.! :welcoming:
 

martodvo

Gamma
Verificación en dos pasos desactivada
Desde
9 Dic 2010
Mensajes
155
Edad
68
Gracias por el code.

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

Arriba