Inicie sesión con la cuenta de Google en CodeIgniter

La API de Google OAuth es la forma sencilla y eficaz de integrar el sistema de inicio de sesión en el sitio web. La API de inicio de sesión de Google OAuth le permite al usuario iniciar sesión en la aplicación web utilizando su cuenta de Google sin registro. La principal ventaja del inicio de sesión de Google es que el usuario puede iniciar sesión en la aplicación web con su cuenta de Google existente sin tener una cuenta de registro en el sitio web. Hoy en día, casi todos los usuarios de la web tienen una cuenta de Google. Iniciar sesión con Googleayuda a aumentar la suscripción del usuario en su sitio web.
La API de Google permite autenticarse con la cuenta de Google y recuperar los datos del perfil del usuario. Puede integrar fácilmente el inicio de sesión con la API de Google mediante PHP y la biblioteca de Google OAuth. Si su aplicación web creada con CodeIgniter, la biblioteca del cliente API de Google debe integrarse en la aplicación CodeIgniter. En este tutorial, le mostraremos cómo integrar el inicio de sesión de Google en CodeIgniter utilizando el cliente PHP API de Google y permitir que el usuario inicie sesión con Google en CodeIgniter .
En el código de ejemplo, proporcionaremos una guía paso a paso para implementar el inicio de sesión de Google en CodeIgniter y obtener la información del perfil de Google mediante la biblioteca de cliente API de Google. Además, los datos de la cuenta del usuario se almacenarán en la base de datos MySQL.
Antes de comenzar a implementar el inicio de sesión de Google en CodeIgniter 3 utilizando la Biblioteca de cliente de PHP, cree un Proyecto en la Consola de API de Google y genere la ID del cliente y su secreto.

Crear el proyecto de la consola de Google API

  • Ir a la consola de la API de Google .
  • Seleccione un proyecto existente de la lista de proyectos, o haga clic en NUEVO PROYECTO para crear un nuevo proyecto:
    • Escriba el nombre del proyecto .
    • Bajo el Nombre del proyecto, verá que la consola API de Google crea la ID del proyecto. Puede editar y cambiar esta ID de proyecto mediante el enlace Editar . Pero la identificación del proyecto debe ser única en todo el mundo.
    • Haga clic en el botón CREAR , el proyecto se creará en unos segundos.
  • En la barra de navegación del lado izquierdo, seleccione Credenciales en la sección de API y servicios.
  • Seleccione la pestaña de la pantalla de consentimiento de OAuth , y configure la pantalla de consentimiento.
    • Ingrese el nombre de la aplicación .
    • Elija una dirección de correo electrónico en el menú desplegable Correo electrónico de soporte .
    • Especifique los dominios autorizados para permitir la autenticación OAuth.
    • Haga clic en el botón Guardar .
  • Seleccione la pestaña Credenciales , haga clic en el menú desplegable Crear credenciales y seleccione ID de cliente de OAuth .
    • Seleccione la aplicación web como el tipo de aplicación.
    • Especifique la URL de redireccionamiento en el campo URI de redireccionamiento autorizado .
    • Haga clic en el botón Crear .
Aparecerá una ventana de diálogo con las credenciales de la API de OAuth (ID de cliente y secreto del cliente). Copie el ID de cliente y el secreto del cliente para su uso posterior en el script para acceder a las API de Google.
codeigniter-google-api-console-oauth-client-id-secret-codexworld
Antes de comenzar el proceso de integración de inicio de sesión de Google, eche un vistazo a la estructura de archivos de Iniciar sesión con Google en CodeIgniter .
codeigniter_google_login / 
├── application / 
│ ├── config /
└── │ └── google.php
├── ├── controladores /
│ │ └── User_authentication.php
│ ├── bibliotecas /
│ │ └── Google.php
│ ├── modelos /
│ │ └── User.php
├── ├── third_party / 
│ │ └── google-api-client / 
│ ├── vistas / 
│ │ ├── autenticación de usuario /
│ │ │ ├── index.php
│ │ │ └── perfil.php
└── activos / 
    ├── css / 
    └── imágenes /

Crear tabla de base de datos

Para almacenar la información de la cuenta de Google, se debe crear una tabla en la base de datos. El siguiente SQL crea una userstabla con algunos campos básicos en la base de datos MySQL.
CREATE  TABLE  `` de los usuarios (
  `id`  int ( 11 ) NOT  NULL AUTO_INCREMENT,
  ` oauth_provider`  varchar ( 10 ) COLLATE utf8_unicode_ci NO  NULL ,
  `oauth_uid`  varchar ( 50 ) COLLATE utf8_unicode_ci NO  NULL ,
  ` first_name`  varchar ( 25 ) Intercalar utf8_unicode_ci NOT  NULL ,
  `last_name`  varchar ( 25) COLLATE utf8_unicode_ci NO  NULL ,
  `email`  varchar ( 50 ) COLLATE utf8_unicode_ci NO  NULL ,
  ` gender`  varchar ( 10 ) COLLATE utf8_unicode_ci DEFAULT  NULL ,
  `locale`  varchar ( 10 ) COLLATE utf8_unicode_ci DEFAULT  NULL ,
  ` picture`  varchar ( 255 ) COLLATE utf8_unicode_ci DEFAULT  NULL,
  `link`  varchar ( 255 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` created` datetime NOT  NULL ,
  `modified` datetime NOT  NULL ,LLAVE 
 PRIMARIA ( `id` )
) MOTOR = InnoDB  DEFAULT  CHARSET = utf8 COLLATE = utf8_unicode_ci;

Config (application / config /)

autoload.php
Especifique la biblioteca (base de datos y sesión) o helper (url) comúnmente utilizada para cargar de forma predeterminada.
$ autoload [ ' library ' ] = array ( 'database' 'session' );

$ autoload [ 'helper' ] = array ( 'url' );
google.php
Las variables de configuración de la API de Google se definen en este archivo. Especifique la ID de cliente, el Secreto de cliente y la URL de redireccionamiento de acuerdo con las credenciales de API de su Proyecto de la consola de Google API.
<? php
definido ( 'BASEPATH' ) O salir ( 'No se permite el acceso directo al script' );

/ *
| -------------------------------------------------- -----------------
| Configuración de la API de Google
| -------------------------------------------------- -----------------
| Para obtener detalles de la API tienes que crear un proyecto de Google
| en la consola de Google API (https://console.developers.google.com)
| cliente_id cadena Su ID de cliente API de Google.
| cliente_secret cadena Su secreto cliente de API de Google.
| URL de cadena redirect_uri para redireccionar a después del inicio de sesión.
| application_name string Su nombre de aplicación de Google.
| Api_key cadena clave de desarrollador.
| ámbitos cadena Especificar ámbitos
* /
$ config [ 'google' ] [ 'client_id' ] =  'Google_API_Client_ID' ;
$ config [ 'google' ] [ 'client_secret' ] =  'Google_API_Client_Secret' ;
$ config [ 'google' ] [ 'redirect_uri' ] =  'https://example.com/project_folder_name/user_authentication/' ;
$ config [ 'google' ] [ 'application_name' ] =  'Inicie sesión en CodexWorld.com' ;
$ config [ 'google' ] [ ';
$ config [ 'google' ] [ 'scopes' ] = array ();
Tenga en cuenta que: Encontrará el ID de cliente y el Secreto de cliente en su Proyecto de la consola de Google API. (Vaya a la página de credenciales de la API de Google » Haga clic en OAuth Client ID para la aplicación web » Copie el ID del cliente y el secreto del cliente »Reemplace el valor client_id con el ID del cliente y el valor client_secret con el secreto del cliente)

Tercero (application / third_party /)

google-api-client/
El cliente PHP de la API de Google se utiliza para conectarse y autenticarse con la API de Google OAuth. La biblioteca google-api-client debe ubicarse en el directorio third_party / de su aplicación CodeIgniter.
Tenga en cuenta que: No es necesario descargar la biblioteca del cliente PHP API de Google por separado, todos los archivos necesarios se incluyen en el código fuente.

Bibliotecas (aplicación / bibliotecas /)

Google.php
La biblioteca de Google OAuth ayuda a integrar el cliente API de Google en la aplicación CodeIgniter 3.x. Puede agregar fácilmente el inicio de sesión con la funcionalidad de Google a la aplicación CodeIgniter utilizando la biblioteca de cliente PHP API de Google.
Tenga en cuenta que: no es necesario descargarlo por separado, el archivo de la biblioteca de Google se incluye en el código fuente.

Controladores (aplicación / controladores /)

User_authentication.php
El controlador de autenticación de usuario maneja el proceso de autenticación, inicio de sesión y cierre de sesión con la cuenta de Google.
  • __construct () : la biblioteca de Google y el modelo de usuario se cargan en este método.
  • índice () : esta función maneja la funcionalidad de autenticación con la cuenta de Google. 
    Si el usuario se autentica con Google, sucede lo siguiente:
    • Conéctese y autentíquese con la API de Google OAuth utilizando la biblioteca de Google OAuth.
    • Obtener la información del perfil del usuario de la cuenta de Google.
    • Inserte los datos de la cuenta de Google en la base de datos usando el método checkUser () del modelo de usuario.
    • Almacene el token de estado de inicio de sesión y los datos del perfil de usuario en la sesión.
    • Redirigir al usuario a la página de perfil.
    Para el usuario no autenticado, se genera la URL de autenticación de Google y se carga la vista de inicio de sesión.
  • perfil () -
    • Recuperar los datos de usuario de la SESIÓN.
    • Cargue la vista de perfil para mostrar la información del perfil de Google.
  • cerrar sesión () -
    • Restablezca el token de acceso mediante la función revokeToken () de la biblioteca de Google OAuth.
    • Eliminar los datos de la cuenta de usuario de la SESIÓN.
    • Cierre la sesión del usuario de la cuenta de Google.
<? php
definido ( 'BASEPATH' ) O salir ( 'No se permite el acceso directo al script' );

clase  User_Authentication  extiende  CI_Controller  {
    
    función  __construct () {
         parent :: __construct ();
        
        // Cargar google oauth library
         $ this -> load -> library ( 'google' );
        
        // Cargar modelo de usuario
         $ esto -> cargar -> modelo ( 'usuario' );
    }
    índice de 
    función pública  () {
         // Redireccionar a la página de perfil si el usuario ya inició sesión
         si ( $ this -> session -> userdata ( 'logIn' ) ==  true ) {
             redirect ( 'user_authentication / profile /' );
        }
        
        if (isset ( $ _GET [ 'code' ))) {
            
            // Autenticar usuario con google
             if ( $ this -> google -> getAuthenticate ()) {
            
                // Obtener información de usuario de google
                 $ gpInfo  $ this -> google -> getUserInfo ();
                
                // Preparando datos para la inserción de la base de datos
                 $ userData [ 'oauth_provider' ] =  'google' ;
                $ userData [ 'oauth_uid' ] =  $ gpInfo [ 'id' ];
                $ userData [ 'first_name' ] =  $ gpInfo [ 'given_name' ];
                $ userData [ 'last_name' ] =  $ gpInfo [ 'family_name' ];
                $ userData [ 'email'];
                $ userData [ 'gender' ] =! empty ( $ gpInfo [ 'gender' ])? $ gpInfo [ 'género' ]: '' ;
                $ userData [ 'locale' ] =! empty ( $ gpInfo [ 'locale' ])? $ gpInfo [ 'locale' ]: '' ;
                $ userData [ 'link' ] =! empty ( $ gpInfo [ 'link' ])? $ gpInfo [ 'link' ]: '$ userData [ 'picture' ] =! empty ( $ gpInfo [ 'picture' ])? $ gpInfo [ 'picture' ]: '' ;
                
                // Insertar o actualizar los datos del usuario en la base de datos
                 $ userID  $ this -> user -> checkUser ( $ userData );
                
                // Almacene el estado y la información del perfil del usuario en la sesión
                 $ this -> session -> set_userdata ( 'logIn' true );
                $ this -> session -> set_userdata ( 'userData' $ userData );
                
                // Redireccionamiento a la página de perfil
                 redirección ( 'user_authentication / profile /' );
            }
        } 
        
        // url $ data de autenticación de Google
         [ 'loginURL' ] =  $ this -> google -> loginURL ();
        
        // Cargar la vista de inicio de sesión de Google
         $ this -> load -> view ( 'user_authentication / index' , $ data );
    }
    perfil de la 
    función pública  () {
         // Redirigir a la página de inicio de sesión si el usuario no inició sesión
         si (! $ this -> session -> userdata ( 'logIn' )) {
             redirect ( '/ user_authentication /' );
        }
        
        // Obtener información de usuario de la sesión
         $ data [ 'userData' ] =  $ this -> session -> userdata ( 'userData' );
        
        // Cargar vista de perfil de usuario
         $ this -> load -> view ( 'user_authentication / profile' , $ data );
    }
    
    función pública  logout () {
         // Restablecer el token de acceso OAuth
         $ this -> google -> revokeToken ();
        
        // Eliminar el token y los datos del usuario de la sesión
         $ this -> session -> unset_userdata ( 'logIn' );
        $ this -> session -> unset_userdata ( 'userData' );
        
        // Destruye datos de la sesión completa
         $ this -> session -> sess_destroy ();
        
        // Redireccionar a la página de inicio de sesión
         redirect ( '/ user_authentication /' );
    }
    
}

Modelos (aplicación / modelos /)

User.php
El modelo de usuario se utiliza para insertar / actualizar datos en la tabla de usuarios.
  • __construct () : defina el nombre de la tabla de la base de datos y la clave principal.
  • checkUser () : inserte o actualice los datos de la cuenta de usuario en la base de datos según el proveedor y la identificación de OAuth.
<? php
definido ( 'BASEPATH' ) O salir ( 'No se permite el acceso directo al script' );

clase  Usuario  extiende  CI_Model  {
    
    función  __construct () {
         $ this -> tableName  'users' ;
        $ this -> primaryKey  'id' ;
    }
    
    función pública  checkUser ( $ data  = array ()) {
         $ this -> db -> select ( $ this -> primaryKey );
        $ this -> db -> from ( $ this -> tableName );
        
        $ con  = array (
             'oauth_provider'  =>  $ data [ 'oauth_provider' ],
             'oauth_uid'  =>  $ data [ 'oauth_uid' ]
        );
        $ this -> db -> where ( $ con );
        
        $ consulta  $ esto -> db -> get ();
        
        $ check  $ consulta -> num_rows ();
        
        if ( $ check  0 ) {
             // Obtener datos de usuario anterior
             $ result  $ query -> row_array ();
            
            // Actualizar datos de usuario
             $ datos [ 'modificado' ] =  fecha ( "Ymd H: i: s" );
            $ update  $ this -> db -> update ( $ this -> tableName $ data , array ( 'id' => $ result [ 'id' ]));
            
            // id de usuario
             $ userID  $ result [ 'id' ];
        }más{
            // Insertar datos de usuario
             $ datos [ 'creado' ] =  fecha ( "Ymd H: i: s" );
            $ datos [ 'modificado' ] =  fecha ( "Ymd H: i: s" );
            $ insert  $ this -> db -> insert ( $ this -> tableName , $ data );
            
            // id de usuario
             $ userID  $ this -> db -> insert_id ();
        }
        
        // Devolver ID de usuario devolver  $ ID de usuario
         ? $ userID : falso ;
    }

}

Vistas (aplicación / vistas /)

user_authentication/index.php
En esta vista, se muestra el botón Iniciar sesión con cuenta de Google y redirige al usuario a la URL de Google OAuth.
< H2 > CodeIgniter Google Iniciar sesión </ h2 > 
<! - despliegue de señal en el botón -> 
< un  href = " <? Php  echo  $ loginUrl >? " > < Img  src = " <? Php  echo  base_url ( 'activos /images/google-sign-in-btn.png ' );  ?> " /> </ a >
user_authentication/profile.php
Si el usuario inició sesión con su cuenta de Google, los detalles del perfil se muestran con un enlace de cierre de sesión.
< h2 > Detalles de la cuenta de Google </ h2 > 
< div  class = "ac-data" > 
    <! - Mostrar información del perfil de Google -> 
    < img  src = " <? php  echo  $ userData [ 'picture' ];  ?> " /> 
    < p > < b > ID de Google: </ b >  <? php  echo  $ userData [ 'oauth_uid' ]; ?> <
    > < b > Nombre: </ b >  <? php  echo  $ userData [ 'first_name' ]. '' . $ userData [ 'last_name' ]; ?> </ p > 
    < p > < b > Correo electrónico: </ b >  <? php  echo  $ userData [ 'email' ]; ?> </ p > 
    < p > < b > Género: <? php  echo  $ userData [ 'género' ]; ?> </ p > 
    < p > < b > Locale: </ b >  <? php  echo  $ userData [ 'locale' ]; ?> </ p > 
    < p > < b > Ha iniciado sesión con: </ b > Google </ p > 
    < p > < a  href = "$ userData [ 'link' ]; ?> "  target = " _blank " >Haga clic para visitar Google+</ a ></ p >
    < p >Cerrar sesión de< a  href = " <? php  echo  base_url (). 'user_authentication / logout' ?> " >Google</ a ></ p >
</ div >

Conclusión

Hemos intentado facilitar la integración de inicio de sesión de Google para la aplicación CodeIgniter. La biblioteca de cliente API de Google facilita la integración del inicio de sesión con Google en CodeIgniter. Puede integrar fácilmente el inicio de sesión de Google utilizando nuestra biblioteca de Google OAuth para CodeIgniter. Además, puede ampliar la funcionalidad del ejemplo de script de autenticación de Google CodeIgniter según sus necesidades. Para que el inicio de sesión social sea más fácil de usar, puede agregar la opción de inicio de sesión de Facebook en CodeIgniter .

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.