Crear aplicaciones dentro de un iframe usando SDK de PHP y JS

  • Autor Autor Cicklow
  • Fecha de inicio Fecha de inicio

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Hola en este post les enseñare como crear aplicaciones dentro de un iframe. Ya que facebook no permite más aplicaciones FBML, tendremos que aprender a programar en iframes. No es tan difícil, solo tendremos que usar el SDK de PHP y el SDK de JS.
SDK PHP = Enlace eliminado
SDK JS = JavaScript SDK - Facebook Developers

Creamos un archivo llamado config.php, con este contenido:
Lo primero que tendremos que hacer es definir las url de nuestra apps dentro de nuestro servidor y la url dentro de facebook.
Insertar CODE, HTML o PHP:
    define('FAC','http://apps.facebook.com/miapps/');
    define('WEB','http://www.miserver.com/miapps/');

Ahora crearemos una función encargada de crear la url de login de facebook (pedir permisos).
Insertar CODE, HTML o PHP:
    @set_time_limit(0);
    $__ID = 'ID_DE_NUESTRA_APLICACION';
    $__KEY = 'SECRET_KEY';

    require '../src/facebook.php'; //SDK PHP-Facebook

    // Creamos una instancia de facebook
    $facebook = new Facebook(array(
      'appId'  => $__ID,
      'secret' => $__KEY,
      'cookie' => true,
    ));

    function redirect($PERMS="") { //esta funcion nos regresara el link para pedir permisos, el parametro son los permisos especiales
        global $facebook;
        $loginUrl=$facebook->getLoginUrl(array(
        'canvas'=>1,
        'fbconnect'=>0,
        'display'=>'page',
        'next'=>FAC,
        'cancel_url'=>FAC,
        'req_perms'=>$PERMS,
        ));

        return $loginUrl;
        exit();
    }

    //Guardamos la session de facebook!
    $session = $facebook->getSession();
Con esto tendríamos config.php

Ahora crearemos nuestra aplicación.
Llamamos a nuestro config.php
Insertar CODE, HTML o PHP:
    include('config.php');

Comenzamos con nuestro código HTML (No me pondré en detalle de cómo hacer una web HTML, este código iría después del BODY)
Insertar CODE, HTML o PHP:
<div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({appId: '<?=$__ID;?>', status: true, cookie: true, xfbml: true});
        FB.Canvas.setAutoResize(); //Acomoda el tamaño para que no se vean las barras de navegacion
      };

      //Funcion encargada de recomendar nuestra aplicacion (Será llamada desde un link)
      function Rec(){
        FB.ui({method: 'apprequests', message: 'Te recomiendo mi aplicacion', data: 'track<?=time();?>'});
      }

      //Usamos el SDK JS-Facebook
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/es_LA/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>
En el código anterior lo que hacemos es llamar la api de Facebook desde el SDK JS, con esto tendremos los datos del usuario en funciones JavaScript, también las tendremos desde nuestro SDK-PHP. Ya les mostrare como.

Ahora verificamos si el usuario tiene una sesión creada, si tiene continuamos con nuestra aplicación, de lo contrario re direccionamos al login de facebook (si el usuario accede por primera vez se le pedirá permisos para acceder, si ya a accedido solo re direccionara y regresara a nuestra aplicación (creando así la sesión). (PHP CODE)
Insertar CODE, HTML o PHP:
    if (!is_array($session)) {
        //Redireccionamos usando window.top ya que tenemos que redireccionar por ensima de nuestro iframe, llamamos a redirect() que nos regresara el link, si necesitamos por ejemplo pedir el email del usuario usamos redirect('email').
        echo '<script>window.top.location="'.redirect().'";</script>';
        die();
    } else {
        try {
            //Esto lo usaremos si queremos saber algún dato del usuario.
            $me = $facebook->api('/me/?fields=name');
        } catch (FacebookApiException $e) {
            //Si existe algun error lo mostramos
            echo $e;
            die();
        }
    }

Ahora mostraremos los datos del usuario con PHP
Insertar CODE, HTML o PHP:
    echo 'Hola '.$me['data']['name'].'<br/>'; //Mostramos su nombre
    echo '<img src="https://graph.facebook.com/'.$facebook->getUser().'/picture"/>'; //Mostramos la imagen del perfil, $facebook->getUser() nos regresa el id del usuario

Ahora mostraremos los datos del usuario con JS
Insertar CODE, HTML o PHP:
    <div id="texto"></div>
    <script>
        FB.api('/me', function(response) { 
            document.getElementById('texto').innerHTML = 'Nombre: ' + response.name + '<br/>';
            document.getElementById('texto').innerHTML += 'Imagen: <img src="https://graph.facebook.com/' + response.id +'/picture"/><br/>';
        } });
    </script>

Para recomendar nuestra aplicación usamos este código:
Insertar CODE, HTML o PHP:
    <a href="#" onclick="Rec();return false;">Recomendar Aplicacion</a>


Saludos y suerte

Adjuntos:
Ver el archivo adjunto index.txt
Ver el archivo adjunto config.txt
 
Bastaten bueno amigo, muchas gracias, haber si pronto me animo a realizar una app para Facebook! Der verdad muchas gracias!
 
Se agradece amigo....saludos
Podrias poner alguna que hayas hecho??
 
Soy programador de mas de dos años en Facebook, por ende tengo varias ya... jejej, pero te paso el directorio de mis apps:
Cicklow Aplicaciones on Facebook | Facebook

Saludos. Cualquier cosa me dicen, tengo mas tutoriales por mostrarles. (tengo un foro propio en el cual voy enseñando a crear apps facebook)
 

Ojala pudieses pasarme eese foro por MP y a la vez publicar más tutoriales como estos, son bastante buenos! 😉
 
PM enviado. es un foro muy chico, pero siempre coloco tutoriales de Face

Vale aclarar que si usan el SDK 3.0 de facebook tienen que reemplazar esto:
Insertar CODE, HTML o PHP:
$session = $facebook->getSession();
Por:
Insertar CODE, HTML o PHP:
$session = $facebook->getUser();

Ya que la nueva SDK no usa mas sessiones abiertas (pasando los parametros por GET o POST), estos quedan en cookies y sessiones.

Saludos
 
Muy bueno. Tengo una consulta: si quisiera sólo crear una pestaña con una imagen (iframe) pero que no se visualice el scroll... ¿cómo le haría?
 
tenes ke usar la api de facebook, pero el SDK JavaScript.
Usando:
Insertar CODE, HTML o PHP:
<script>window.fbAsyncInit = function() {
		FB.init({appId: 'APP_ID', status: true, cookie: true, xfbml: true});
		FB.Canvas.setAutoResize();
	};</script>

Tmb puedes usar el tag body CSS para que no muestre el scroll.

http://developers.facebook.com/docs/reference/javascript/

Saludos
 
Última edición:
¿Cuál es el tag body CSS? Gracias por la respuesta.

 
Insertar CODE, HTML o PHP:
<body style="overflow: hidden;" leftMargin="0" topMargin="0" marginwidth="0" marginheight="0">
 
Insertar CODE, HTML o PHP:
<body style="overflow: hidden;" leftMargin="0" topMargin="0" marginwidth="0" marginheight="0">

Gracias!!! yo lo puse así

Insertar CODE, HTML o PHP:
<style type="text/css"> 
html { overflow:hidden; }
.......
</style>

También sirve... tu respuesta me sirvió para buscar más sobre el overflow... ahora sólo me queda aprender a usar el JavaScritp SDK de facebook
 


Me interesa aprende a programas apps para facebook puede mandarme el link de tu foro??
 
Cuando entro a la API que cree en facebook me sale "Sorry, the application you were using is misconfigured. Please try again later."

Como la configuro correctamente?