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

Cicklow Seguir
Seguidores
14

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
959
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:

Uriel

1
Kappa
Redactor
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Desde
8 Jul 2009
Mensajes
2.691
Ahora a spemear en facebook ;)

:bootyshake:
 

sonydei

Gamma
Verificación en dos pasos desactivada
Desde
25 Ene 2011
Mensajes
246
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
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
959
Fijate el fixed ke le puse!!! usa nuevamente el codigo!!!
 

sonydei

Gamma
Verificación en dos pasos desactivada
Desde
25 Ene 2011
Mensajes
246
Gracias cicklow. Voy a probar, por cierto el del iframe me da este error Fatal error: Uncaught OAuthException: (#803
 

vieckthor

Beta
Verificado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Jul 2011
Mensajes
117
Hola!

De "casualidad" lo tienes implementado en un lugar donde podamos probarlo?
Se agradece el aporte.
 

blueshadow

Beta
Redactor
Verificación en dos pasos desactivada
Desde
12 Ago 2011
Mensajes
109
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Disculpa Me confundi de Tema !
 
Última edición:

ikanus

Gamma
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
22 Sep 2010
Mensajes
284
Excelente código, pero da miedo la reacción de Facebook :pirate:
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
959
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 :D
 

blueshadow

Beta
Redactor
Verificación en dos pasos desactivada
Desde
12 Ago 2011
Mensajes
109
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
exelente ! :devilish:
 

blueshadow

Beta
Redactor
Verificación en dos pasos desactivada
Desde
12 Ago 2011
Mensajes
109
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Buen aporte :drunk:
 

edizzz

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
5 Oct 2012
Mensajes
182
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.
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
959
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!
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba