Aclaración inicial, este tutorial no lo hice yo, en fuente puse el link original.
Publicar diariamente en el muro del usuario
En este tutorial aprenderán a crear una aplicación viral, que publica automáticamente todos los días en el muro del usuario un resultado (texto, horóscopo, etc.).
No vamos a usar ningún SDK, solo código PHP y la Graph API de facebook .
En este ejemplo crearemos una aplicación de horóscopo diario, el horóscopo será leído de un archivo, ese archivo lo tendrán que actualizar ustedes diariamente, o contratar a alguien, o crear un boot que arme el horóscopo automáticamente (eso corre por su cuenta).
Desde ya usaremos MSQL para guardar el access_token del usuario, el cual nos permitirá postear diariamente en su muro .
<?php
//Config de tu apps
$app_id = "TU_APP_ID";
$app_secret = "APP_SECRET";
$miappurl = "http://apps.facebook.com/miapps/";
//Verificamos
$code = $_REQUEST["code"];
if(!$code){
//Armamos la url con los permisos a usar!
$dialog_url= "http://www.facebook.com/dialog/oauth?client_id=".$app_id."&redirect_uri=".urlencode($miappurl)."&scope=publish_stream,offline_access";
echo("<script>top.location.href='".$dialog_url."'</script>");
die();
}else{
//Obtenemos el access_token (nos permitira publicar en el muro)
$token_url="https://graph.facebook.com/oauth/access_token?client_id=".$app_id."&client_secret=".$app_secret."&redirect_uri=".urlencode($miappurl)."&code=".$code;
$response = @file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$access_token = $params['access_token'];
//Obtener el uid del usuario
$uid_url = "https://graph.facebook.com/me?fields=id,first_name&access_token=".$access_token;
$dto = @file_get_contents($uid_url);
$dto = json_decode($dto,true);
$user_id = $dto['id'];
$nombre = $dto['first_name'];
//Nos comentamos a nuestra BD
$dbhost = "localhost";
$dbuser = "usuario";
$dbpass = "password";
$dbname = "base_de_datos";
$dbh = mysql_connect($dbhost,$dbuser, $dbpass);
mysql_select_db("$dbname") or die ("Error!");
//Verificamos si el usuario ya existe!
$SQL = @mysql_query("SELECT uid FROM usuarios_face WHERE uid='".$user_id."'");
$ROW = @mysql_fetch_array($SQL);
if($ROW['uid']==""){
@mysql_query("INSERT INTO usuarios_face VALUES('".$user_id."','".$access_token."','".$nombre."','')");
}
//Mostramos el horoscopo
$SIG = array('acuario','aries','capricornio','cancer','escorpio','geminis','leo','libra','piscis','sagitario','tauro','virgo');
echo '<center>Seleccione su signo del zodiaco<br/><form action="'.$miappurl.'?code='.$code.'" target="_top" method="GET"><select name="signo">';
foreach($SIG as $S){
echo '<option value="'.$S.'">'.ucwords($S).'</option>';
}
echo '</select><br/><input type="hidden" name="code" value="'.$code.'"><input type="submit" value="Ver mi horoscopo"></form><br/>';
if($_REQUEST['signo']!=""){
//Guardamos el signo
mysql_query("UPDATE usuarios_face SET signo='".$_REQUEST['signo']."' WHERE uid='".$user_id."'");
//Mostramos el signo
include('horos_'.$_REQUEST['signo'].'.txt');
}
}
?>
Ahora el cron diario (se ejecutara todos los dias a las 00hs):
<?php
@set_time_limit(0);
$app_id = "TU_APP_ID";
$app_secret = "APP_SECRET";
$miappurl = "http://apps.facebook.com/miapps/";
$nombreapp = "Horoscopo del dia";
//Nos comentamos a nuestra BD
$dbhost = "localhost";
$dbuser = "usuario";
$dbpass = "password";
$dbname = "base_de_datos";
$dbh = mysql_connect($dbhost,$dbuser, $dbpass);
mysql_select_db("$dbname") or die ("Error!");
$SIG = array('acuario','aries','capricornio','cancer','escorpio','geminis','leo','libra','piscis','sagitario','tauro','virgo');
//cargamos los signos en un array, para no tener que leer el file por cada usuario, evitano cargar el server
foreach($SIG as $S){
$H[$S] = file_get_contents('horos_'.$S.'.txt');
}
//Cargamos todos los usuarios
$SQL = @mysql_query("SELECT * FROM usuarios_face WHERE 1");
while($ROW = @mysql_fetch_array($SQL)){
$posteo_url = "https://graph.facebook.com/"
. $ROW['uid'] . "/feed?"
. "&message="
. "&picture=" . urlencode('http://www.miweb.com/img/'.$ROW['signo'].'.jpg')
. "&link=" . urlencode($miappurl)
. "&name=" . urlencode($nombreapp)
. "&caption=" . urlencode($H[$ROW['signo']])
. "&method=POST"
. "&access_token=" .$ROW['access_token'];
@file_get_contents($posteo_url);
}
die('Terminado');
?>
Codigo para crear la tabla en mysql
CREATE TABLE `usuarios_face` (
`uid` DOUBLE NOT NULL ,
`access_token` TEXT NOT NULL ,
`nombre` VARCHAR( 25 ) NOT NULL ,
`signo` VARCHAR( 20 ) NOT NULL ,
INDEX ( `uid` )
) ENGINE = MYISAM ;
Bueno, espero les sea de su agrado, pronto pondré más tutos ya sea hechos por mi o los que encuentre en internet.