Foros del Web » Programando para Internet » PHP » CodeIgniter »

Aporte: Facebook connect en CodeIgniter

Estas en el tema de Aporte: Facebook connect en CodeIgniter en el foro de CodeIgniter en Foros del Web. Hola amigos, la verdad es que estuve bastante complicado buscando por internet un tutorial de como mis usuarios pudiesen hacer el login con facebook, la ...
  #1 (permalink)  
Antiguo 04/03/2013, 09:18
 
Fecha de Ingreso: agosto-2010
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 2
De acuerdo Aporte: Facebook connect en CodeIgniter

Hola amigos, la verdad es que estuve bastante complicado buscando por internet un tutorial de como mis usuarios pudiesen hacer el login con facebook, la verdad es que después de vagar muchas horas encontré algo bastante simple y explicativo que se puede encontrar aquí: http://www.youtube.com/watch?v=MxSIKGWxztA

Sin embargo y para evitar el video les entrego la librería que se crea en ese tutorial más algunas modificaciones, a mi me ha funcionado a la perfección. Espero a algunos les sirva :)

Lo que hay que tener presente es que los archivos de la api (base_facebook.php, facebook.php y fa_ca_chain_bundle.crt) se ubican en /application/libraries/facebook/

Luego nuestros archivos:

/application/config/facebook.php
Código PHP:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    
$config['appId'] = 'TuAppID';
    
$config['secret'] = 'TuAppSecretKey';
/application/libraries/fbconnect.php
Código PHP:
<?php
    
    
include(APPPATH 'libraries/facebook/facebook.php');

    class 
Fbconnect extends Facebook {
        
      public 
$user null;
      public 
$userId null;
        
        public function 
Fbconnect() {
            
$CI = &get_instance();
            
            
$CI->config->load('facebook'TRUE);
            
$config $CI->config->item('facebook');

            
parent::__construct($config);
            
parse_str(substr(strrchr($_SERVER['REQUEST_URI'], '?'), 1), $_REQUEST);
            
            
// Se comprueba si está logeado
            // Si se puede tomar la información del usuario
            
$this->userId $this->getUser();
            
            
// Sí tiene una sesión abierta
            
if($this->isLogedIn()) {
                try {
                    
// Se obtiene la info del usuario
                    
$this->user $this->api('/me');
                }
                catch(
FacebookApiException $e) {
                    
error_log($e);
                }
            }
            
        }
        
        
// Devuelve URL foto de perfil
        
public function profilePic($uid=FALSE) {
            if(!
$uid) {
                
$uid $this->userId;
            }
            
            return 
'http://graph.facebook.com/' $uid '/picture';
        }
        
        
// Realizar peticiones a través de FQL: Tabla, Scopes, Array u Objeto, Where
        // $this->fbconnect->fqlQuery('user', 'current_location');
        
public function fqlQuery($table$scopes$as_object=TRUE$where='uid=me()') {
            
$array $this->api(array('method'=>'fql.query','query'=>"SELECT " $scopes " FROM " $table " WHERE " $where));
            return (
$as_object json_decode (json_encode ($array[0]), FALSE) : $array[0]);
        }
        
        
// Comprobar si está logeado
        
public function isLogedIn() {
            return (
$this->userId);
        }
        
        
// Datos del usuario para manejo en controlador
        // $this->fbconnect->userData()->email;
        
public function userData($obj=TRUE) {
            if(
$this->user) {
                return (
$obj json_decode (json_encode ($this->user), FALSE) : $this->user);
            }
            return array();
        }
        
        
// Acción de login. Directo en el controlador
        // $this->fbconnect->doLogin('http://ejemplo.com/login/facebook', 'email');
        
public function doLogin($redirect$scope='') {
            
redirect($this->getLoginUrl(array('redirect_uri' => $redirect'scope' => $scope)));
        }
    
    }
Y ahora un pequeño ejemplo, obviamente que primero tenemos que crear nuestra aplicación en facebook para obtener la API Key y la clave secreta, luego de eso:

Código PHP:
class Prueba extends CI_Controller {

    public function 
index() {
        
// Cargamos la librería
        
$this->load->library('fbconnect');

        
// Hizo el login con facebook?
        
if($this->fbconnect->isLogedIn()) {
            
// Mostramos primer nombre
            
echo 'Hola ' $this->fbconnect->userData()->first_name '<br />';
            
            
// Mostramos foto de perfil
            
echo '<img src="' $this->fbconnect->profilePic() . '" /><br />';
            
            
// Mostramos el resto de los datos que nos entrega facebook
            
echo '<pre>';
            
print_r($this->fbconnect->userData());
            echo 
'</pre>';
        }
        
// Si no ha hecho el login le mostramos el link
        
else {
            echo 
anchor('/prueba/fblogin''Login con facebook');
        }
    }
    
    public function 
fblogin() {
        
// Cargamos la librería
        
$this->load->library('fbconnect');
        
        
// Se hace el login, primer parámetro la dirección donde los devolverá y el segundo los "scopes" (Info adicional que queremos pedirle a facebook)
        
$this->fbconnect->doLogin(site_url('/prueba'), 'email,user_birthday,user_location');
    } 
Eso es todo, espero a alguien más le sirva ya que a mi me complicó bastante en un principio.

Saludos!

Última edición por diegoibanez; 04/03/2013 a las 09:28
  #2 (permalink)  
Antiguo 17/07/2014, 08:57
 
Fecha de Ingreso: septiembre-2013
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Aporte: Facebook connect en CodeIgniter

Buenas tardes, estoy mirando tu tutorial, que me parece muy bueno para ejecutarlo, estuve yendo al link que dejas en la descripción, pero no funciona y tengo una duda, con respecto al ultimo codigo...en donde o que ruta se coloca esa parte de codigo? te quedaria muy agradecido si me das mas detalles del proceso de loguearse por medio de esta red social, ya que he tratado de encontrar la solucion y no la hayo. thx

Etiquetas: connect, facebook, frameworks-y-php-orientado-a-objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:21.