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

[SOLUCIONADO] Validar sesiones con Gmail

Estas en el tema de Validar sesiones con Gmail en el foro de CodeIgniter en Foros del Web. El modelo típico de sesiones es, tener una tabla de usuarios con sus contraseñas, comparar los valores enviados desde un formulario con esta tabla, si ...
  #1 (permalink)  
Antiguo 07/01/2013, 11:47
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 3
Información Validar sesiones con Gmail

El modelo típico de sesiones es, tener una tabla de usuarios con sus contraseñas, comparar los valores enviados desde un formulario con esta tabla, si coinciden, dar acceso al usuario.

En mi caso, ya he hecho esto con CI. Estoy migrando un sistema (hecho desde 0 con clases) a CI, solo que lo especial de este sistema, es que, las sesiones se validan con usuario y contraseña de Google (Gmail), haciendo uso de Zend y una librería (desconozco Zend y por lo tanto si está bien llamado así) llamada Gdata, la cual me permite usar un formulario mío, enviar usuario y contraseña a mi servidor y en éste, enviar usando Zend, los datos a Gmail para que me regrese un TRUE o FALSE. Obvio, si es TRUE, reviso en mi BD si este usuario (sin contraseña, ya que esta se valida con Gmail) existe y posteriormente doy acceso, de lo contrario, no entra.

Esto es a grandes rasgos, espero su ayuda.

Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 07/01/2013, 12:04
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Validar sesiones con Gmail

Y cual es el problema exactamente ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 07/01/2013, 12:09
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 3
Respuesta: Validar sesiones con Gmail

Implementar esta parte de Zend en CI. Validar con Gmail la sesión.
  #4 (permalink)  
Antiguo 07/01/2013, 13:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Validar sesiones con Gmail

Pues puedes usar la misma librería, no es necesario que uses el MVC de Zend ni nada, puedes tomar esa parte del FW y utilizarla en tu sistema, es uno de los beneficios de Zend
  #5 (permalink)  
Antiguo 07/01/2013, 13:57
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 3
Respuesta: Validar sesiones con Gmail

La pregunta es, ¿cómo? Gracias!
  #6 (permalink)  
Antiguo 07/01/2013, 14:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Validar sesiones con Gmail

Simplemente copia el FW a alguna carpeta y la incluyes usando include_once() por cada archivo que necesites, o usa el Autoloader de Zend:
Código PHP:
Ver original
  1. set_include_path(implode(PATH_SEPARATOR, array(
  2.     'path/a/zend/framework/library',
  3. )));
  4.  
  5. require_once 'Zend/Loader/Autoloader.php';
  6. $autoloader = Zend_Loader_Autoloader::getInstance();

Ya con eso puedes iniciar cualquier componente de Zend sin necesidad de estar haciendo un require_once.

Saludos.
  #7 (permalink)  
Antiguo 08/01/2013, 09:52
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 3
Respuesta: Validar sesiones con Gmail

Gracias por tu respuesta GatorV.

Intenté hacerlo así como lo ejemplificaste. Aunque me marcaba algunos errores (me imagino que por el .htaccess que maneja CI). De cualquier manera, encontré una forma interesante de combinar ambos FW, y es añadir Zend como librería de CI.

Lo primero que hice fue crear
Código:
zend.php
en
Código:
application/libraries/
Código PHP:
<?php if (!defined('BASEPATH')) {exit('No direct script access allowed');}


class 
CI_Zend
{
    
/**
     * Constructor
     *
     * @param    string $class class name
     */
    
function __construct($class NULL)
    {
        
// include path for Zend Framework
        // alter it accordingly if you have put the 'Zend' folder elsewhere
        
ini_set('include_path',
        
ini_get('include_path') . PATH_SEPARATOR APPPATH 'libraries');

        if (
$class)
        {
            require_once (string) 
$class EXT;
            
log_message('debug'"Zend Class $class Loaded");
        }
        else
        {
            
log_message('debug'"Zend Class Initialized");
        }
    }

    
/**
     * Zend Class Loader
     *
     * @param    string $class class name
     */
    
function load($class)
    {
        require_once (string) 
$class EXT;
        
log_message('debug'"Zend Class $class Loaded");
    }
}

?>
Posterior a esto, añadí en
Código:
autoload.php
(
Código:
application/config/
) la librería zend.

Código PHP:
$autoload['libraries'] = array('database''session''form_validation','zend'); 
Dentro de un modelo de CI, tengo una función dónde recibo como parámetros usuario y contraseña, cargo las librerías de Zend que necesito:
Código PHP:
        $this->zend->load('Zend/Gdata/ClientLogin');
        
$this->zend->load('Zend/Gdata/Gapps');
        try{
            
$client $this->zend->ClientLogin->getHttpClient($usuario$passkey$this->zend->Zend_Gdata_Gapps->AUTH_SERVICE_NAME);
            
$service = new Zend_Gdata_Gapps($client'dominio_que_uso.com.mx');
            return 
true;
        }catch(
Exception $e){
            if(
strpos($e,"BadAuthentication")!==false){
                return 
false;
            }
        } 
El error que me marca es en la línea donde hago referencia a la propiedad ClientLogin. Gracias de antemano.
  #8 (permalink)  
Antiguo 31/01/2013, 11:55
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 3
De acuerdo Respuesta: Validar sesiones con Gmail

Hola de nuevo.

Por fin, pude resolver el problema. De una manera sencilla tal y como me lo había sugerido GatorV.

Esto fue lo que hice en mi modelo. La función regresa TRUE en caso de inicio de sesión satisfactorio o FALSE en caso contrario.

Código PHP:
function gapps($usuario,$passkey){
        
$usuario.='@dominio.com.mx';
        require_once 
'./Zend/Loader.php';
        
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
        
Zend_Loader::loadClass('Zend_Gdata_Gapps');
        try{
            
$client Zend_Gdata_ClientLogin::getHttpClient($usuario$passkeyZend_Gdata_Gapps::AUTH_SERVICE_NAME);
            
$service = new Zend_Gdata_Gapps($client'dominio.com.mx');
            return 
true;
        }catch(
Exception $e){
            if(
strpos($e,"BadAuthentication")!==false){
                return 
false;
            };
        };
    } 
Con esto doy por terminada la duda. Gracias a todos.
  #9 (permalink)  
Antiguo 31/01/2013, 12:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Validar sesiones con Gmail

¡Excelente! Que bien que lo pudiste resolver y aparte compartir tu solución.

Felicidades

Etiquetas: frameworks-y-php-orientado-a-objetos, gmail, sesiones, zend
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 04:10.