Tutorial: [APPS] Publicar diariamente en el muro del usuario

  • Autor Autor Cicklow
  • Fecha de inicio Fecha de inicio
Cicklow

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
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:
<?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:
<?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
Insertar CODE, HTML o PHP:
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 ;
Esto es todo, espero que les sea de ayuda. Saludos (desde ya esto no está muy bien visto en facebook, asique es pan para hoy hambre para mañana).

También pueden pedir el email y guardarlo en su base de datos.
 
Última edición:
Wiii excelente 🙂 Gracias
 
Ahora a spemear en facebook 😉

:bootyshake:
 
Se agradece el aporte!
 
:congrats: Gracias.
Saludos
 
Buen aporte! :biggrin:
 
No me acaba de funcionar.
A ver cuando el user le da permiso, se va a la pagina para seleccionar el signo, y esto no lo escribe en la base de datos
 
Fijate el fixed ke le puse!!! usa nuevamente el codigo!!!
 
Gracias cicklow. Voy a probar, por cierto el del iframe me da este error Fatal error: Uncaught OAuthException: (#803
 
Hola!

De "casualidad" lo tienes implementado en un lugar donde podamos probarlo?
Se agradece el aporte.
 
Disculpa Me confundi de Tema !
 
Última edición:
wow megaspam en facebook xD ^^
 
Excelente código, pero da miedo la reacción de Facebook 😛irate:
 
La respuesta de facebook es:
1- Banean tu apps
2- la subis de nuevo te la banean
3- la subis de nuevo banean tu cuenta
4- la subis con otro user banean la ip de tu servidor y volvemos al paso 1

jeje 😀
 
Muchas gracias, lo probare.
 
exelente ! :devilish:
 
Buen aporte :drunk:
 
estos dos archivos, uno es el config.php y el otro es el index? lo siento por la pregunta pero estoy probando una por una tus apps y estan muy buenas.
 
estos dos archivos, uno es el config.php y el otro es el index? lo siento por la pregunta pero estoy probando una por una tus apps y estan muy buenas.

sisi, tengan en cuenta que el 5 de diciembre esto deja de funcionar, ya que eliminan el permiso offline_access

Saludos!
 
Atrás
Arriba