Iniciar sesión con Twitter en CodeIgniter

Twitter es el servicio de redes sociales más popular. Millones de personas en todo el mundo están conectadas con Twitter. Integrar el inicio de sesión con Twitter en la aplicación web seguramente ayuda a que el proceso de inicio de sesión sea más fácil y fácil para el usuario. La principal ventaja de la integración del inicio de sesión de Twitter es que el usuario no necesita registrar su cuenta en su sitio web. En su lugar, pueden iniciar sesión en su sitio web utilizando su cuenta de Twitter. Dado que casi los usuarios de la web tienen una cuenta de Twitter, Iniciar sesión con Twitter definitivamente te ayuda a aumentar la suscripción de tu sitio web.
La API de Twitter permite autenticarse con la cuenta de Twitter y recuperar la información del perfil del usuario. Puede integrar fácilmente el inicio de sesión con Twitter utilizando PHP y la biblioteca OAuth de Twitter. Si su aplicación web utiliza CodeIgniter, la biblioteca de Twitter OAuth PHP debe integrarse en el CodeIgniter. En este tutorial, le mostraremos cómo integrar el inicio de sesión de Twitter en CodeIgniter utilizando la biblioteca PHP OAuth de Twitter y permitir que el usuario inicie sesión con Twitter en la aplicación CodeIgniter.
En nuestro código de ejemplo, pasaremos por el proceso completo para implementar el inicio de sesión de Twitter en CodeIgniter y obtener los datos de la cuenta de usuario mediante la API de Twitter. Además, los datos del perfil del usuario se almacenarán en la base de datos MySQL.
Antes de comenzar a implementar el inicio de sesión de Twitter en CodeIgniter 3 utilizando OAuth Library, cree una aplicación de Twitteren el panel de Administración de aplicaciones y obtenga la Clave del consumidor y el Secreto del consumidor.

Crear una aplicación de Twitter

Se requieren la Clave del consumidor y el Secreto del consumidor para usar la API de Twitter y estas credenciales se generarán en la aplicación de Twitter. Necesitas crear una aplicación de Twitter para obtener la clave de API y el secreto de API.
  • Vaya a la página de administración de aplicaciones de Twitter e inicie sesión en su cuenta de Twitter.
  • Ingrese los siguientes detalles para crear una nueva aplicación de Twitter.
    • Nombre: Nombre de su aplicación. Esto se muestra al usuario mientras autoriza.
    • Descripción: Descripción de su aplicación. Esto se muestra al usuario mientras autoriza.
    • Sitio web: El sitio web de su aplicación. (http://example.com)
    • URL de devolución de llamada (*): después de la autorización, esta URL se llama con oauth_token. (http://example.com/user_authentication/)
  • Cambie el permiso de las aplicaciones para leer y escribir o leer, escribir y acceder a mensajes directos . Para cambiar el permiso de las aplicaciones, debe agregar un número de teléfono móvil a su cuenta de Twitter.
Después de una creación exitosa de la aplicación de Twitter, haga clic en Probar OAuth para probar la autenticación. Al finalizar la prueba de OAuth, será redirigido a la página de configuración de OAuth. En la página Configuración de OAuth, verá la Clave del consumidor (Clave de la API) y el Secreto del consumidor (Secreto de la API).
twitter-oauth-login-app-consumer-api-key-secret-codexworld
Copie la Clave del consumidor y el Secreto del consumidor para su uso posterior en el script.
Antes de comenzar con el proceso de integración de inicio de sesión de Twitter, eche un vistazo a la estructura de archivos de inicio de sesión de Twitter en CodeIgniter.
codeigniter-twitter-oauth-login-files-structure-codexworld

Crear tabla de base de datos

Para almacenar la información de perfil del usuario, se necesita 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  `users` (
  ` id`  int ( 11 ) NOT  NULL AUTO_INCREMENT,
  `oauth_provider`  varchar ( 15 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` oauth_uid`  int ( 11 ) NOT  NULL ,
  `username`  varchar ( 50 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `first_name`  varchar ( 50 ) COLLATEutf8_unicode_ci NO  NULL ,
  `last_name`  varchar ( 50 ) COLLATE utf8_unicode_ci NO  NULL ,
  ` email`  varchar ( 50 ) COLLATE utf8_unicode_ci DEFAULT  NULL ,
  `locale`  varchar ( 10 ) COLLATE utf8_unicode_ci NO  NULL ,
  ` picture_url`  varchar ( 255 ) Intercalar utf8_unicode_ci NO  NULL ,
  `profile_url` 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' );
twitter.php
Las variables de configuración de la API de Twitter se definen en este archivo. Especifique la Clave del consumidor , el Secreto del consumidor y la URL de redireccionamiento según sus credenciales de la aplicación de Twitter.
<? php 
defined ( 'BASEPATH' ) O exit ( 'No se permite el acceso directo al script' ); 
/ * 
| ----------------------------------------------- --------- 
| Configuración de la API de Twitter 
| ---------------------------------------------- ---------- 
| 
| Para obtener detalles de la API tienes que crear una aplicación de Twitter 
| en Twitter Application Management (https://apps.twitter.com/app/new) 

| twitter_consumer_key string Su clave de aplicación de Twitter. 
| twitter_consumer_secret string Tu aplicación de Twitter secreta. 
| twitter_redirect_url cadena URL para redireccionar a después de iniciar sesión. (no incluir URL base) 
| 
* / $ config ['twitter_consumer_key' ] =  'Insert_Twitter_API_Key' ; $ config [ 'twitter_consumer_secret' ] =  'Insert_Twitter_API_Secret' ; $ config [ 'twitter_redirect_url' ] =  'user_authentication /' ;
Tenga en cuenta que: Encontrará la Clave del consumidor y el Secreto del consumidor en su aplicación de Twitter. (Vaya a la página Administración de aplicaciones de Twitter » Haga clic en su aplicación » Vaya a la pestaña Claves y tokens de acceso » Copie la clave de API y el secreto de API » Reemplace el twitter_consumer_keyvalor con la clave de API y el twitter_consumer_secretvalor con el secreto de API)

Tercero (application / third_party /)

OAuth.php
La biblioteca OAuth ayuda a autenticar con la API de Twitter. No es necesario descargarlo por separado, esta biblioteca se incluye en el código fuente.

Bibliotecas (aplicación / bibliotecas /)

Twitteroauth.php
La biblioteca de Twitter OAuth ayuda a integrar la API REST de Twitter en la aplicación CodeIgniter 3.x. Al utilizar esta biblioteca de API de Twitter, puede agregar fácilmente el inicio de sesión con la funcionalidad de Twitter a la aplicación CodeIgniter mediante la biblioteca de PHP OAuth. No es necesario descargarlo por separado, esta biblioteca se incluye en el código fuente.

Controladores (aplicación / controladores /)

User_authentication.php
El controlador de autenticación de usuario contiene 3 funciones, __construct (), index () y logout ().
  • __construct () : la biblioteca de Twitter OAuth 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 Twitter.
    • Si el usuario ya inició sesión con Twitter, los últimos tweets se recuperarán de su línea de tiempo.
      • Si el usuario se autentica con Twitter, sucede lo siguiente:
      • Twitter OAuth se inicia y obtiene el token de acceso de Twitter.
      • Obtener la información del perfil del usuario de la cuenta de Twitter.
      • Inserte datos de perfil en la base de datos usando el método checkUser () del modelo de usuario.
      • Obtén los últimos tweets de la línea de tiempo del usuario.
      • Almacene el token de acceso y la información del perfil del usuario en la sesión.
    • De lo contrario, se inicia una nueva autenticación y se genera la URL de autenticación de Twitter.
  • logout () : esta función elimina el token de OAuth y los datos del usuario de la SESIÓN. El logout()método se carga para cerrar la sesión del usuario desde su cuenta de Twitter.
<? php 
defined ( 'BASEPATH' ) O exit ( 'No se permite el acceso directo al script' ); 

la clase  User_Authentication  extiende  CI_Controller  { 
    
    function  __construct () { 
        parent :: __construct (); 
        
        // Cargar modelo de usuario 
        $ esto -> cargar -> modelo ( 'usuario' ); 
        
        // Cargar twitter oauth library 
        $ this -> load -> library ( 'twitteroauth' ); 
    } 
    
índice de     función pública  () {
        $ userData  = array (); 
        
        // Obtener el token existente y el token secreto de la sesión 
        $ sessToken  $ this -> session -> userdata ( 'token' ); 
        $ sessTokenSecret  $ this -> session -> userdata ( 'token_secret' ); 
        
        // Obtener el estado y la información del usuario de la sesión 
        $ sessStatus  $ this -> session -> userdata ( 'status' ); 
        $ sessUserData  $ this -> session -> userdata ('userData' ); 
        
        if (! empty ( $ sessStatus ) &&  $ sessStatus  ==  'verified' ) { 
            // Conectar y obtener los últimos tweets 
            $ twitteroauth  $ this -> twitteroauth -> authenticate ( $ sessUserData [ 'accessToken' ] [ 'oauth_token' ],  $ sessUserData [ 'accessToken' ] [ 'oauth_token_secret' ]); 
            
            $ data [ 'tweets' ] =  $ twitteroauth -> get ( 'statuses / user_timeline''screen_name'  =>  $ sessUserData [ 'username' ],  'count'  =>  5 )); 

            // Información del usuario de la sesión 
            $ userData  $ sessUserData ; 
            
        } elseif (isset ( $ _REQUEST [ 'oauth_token' ]) &&  $ sessToken  ==  $ _REQUEST [ 'oauth_token' ]) { 
            // La respuesta exitosa devuelve oauth_token, oauth_token_secret, user_id, y nombre de pantalla 
            $ twitteroauth  $ this -> twitteroauth -> autenticar ( $ sessToken $ sessTokenSecret ); 
            $ accessToken  $ twitteroauth -> getAccessToken ( $ _REQUEST [ 'oauth_verifier' ]); 
            
            if ( $ twitteroauth -> http_code  ==  '200' ) { 
                // Obtenga la información del perfil de twitter del usuario 
                $ userInfo  $ twitteroauth -> get ( 'account / verify_credentials' ); 
                
                // Preparando los datos para la inserción de la base de datos 
                $ nombre  explotar ( "" , $ usuarioInfo -> nombre ); 
                $ first_name = isset ( $ nombre [ 0 ])? $ nombre [ 0 ]: '' ; 
                $ last_name  = isset ( $ name [ 1 ])? $ nombre [ 1 ]: '' ; 
                
                $ userData  = array ( 
                    'oauth_provider'  =>  'twitter' , 
                    'oauth_uid'  =>  $ userInfo -> id , 
                    'username'  =>  $ userInfo -> screen_name , 
                    'first_name'  =>  $ first_name , 
                    'last_name' $ last_name , 
                    'locale'  =>  $ userInfo -> lang , 
                    'profile_url'  =>  'https://twitter.com/' . $ userInfo -> SCREEN_NAME , 
                    'picture_url'  =>  $ userInfo -> profile_image_url 
                ); 
                
                // Insertar o actualizar datos de usuario 
                $ userID  $ this -> user -> checkUser ( $ userData ); 
                
                // Obtener los últimos tweets 
                $ datos [ 'tweets' ] =  $ twitteroauth -> get ('status / user_timeline' , array ( 'screen_name'  =>  $ userInfo -> screen_name 'count'  =>  5 )); 
                
                // Almacena el estado y la información del perfil del usuario en la sesión 
                $ userData [ 'accessToken' ] =  $ accessToken ; 
                $ this -> session -> set_userdata ( 'status' 'verified' ); 
                $ this -> session -> set_userdata ( 'userData' $ userData );

                'error_msg' ] =  'Falló la autenticación, ¡inténtalo de nuevo más tarde!' ; 
            } 
        } else else 
            // // Desconectado token y token secreto de la sesión 
            $ this -> session -> unset_userdata ( 'token' ); 
            $ this -> session -> unset_userdata ( 'token_secret' ); 
            
            // Autenticación 
            reciente $ twitteroauth  $ this -> twitteroauth -> authenticate ( $ sessToken $ sessTokenSecret ); 
            $ requestToken  $ twitteroauth -> getRequestToken (); 
            
            // Obtenga información del token de Twitter y almacene en la sesión 
            $ this -> session -> set_userdata ( 'token' $ requestToken [ 'oauth_token' ]); 
            $ this -> session -> set_userdata ( 'token_secret' $ requestToken [ 'oauth_token_secret' ]); 
            
            // Si la autenticación es exitosa (el código http es 200) 
            if ( $ twitteroauth -> http_code  ==  '200'
                
                $ twitterUrl  $ twitteroauth -> getAuthorizeURL ( $ requestToken [ 'oauth_token' ]); 
                $ data [ 'oauthURL' ] =  $ twitterUrl ; 
            } else { 
                // Autenticación interna url 
                $ data [ 'oauthURL' ] =  base_url (). 'user_authentication /' ; 
                $ data [ 'error_msg' ] =  '¡Error al conectarse a twitter! ¡Inténtalo de nuevo más tarde! ; 
            } 
        } 

        $ data [ 'userData' ] =  $ userData ;
        $ this -> load -> view ( 'user_authentication / index' $ data ); 
    } 

    función pública  logout () { 
        // Eliminar datos de sesión 
        $ this -> session -> unset_userdata ( 'token' ); 
        $ this -> session -> unset_userdata ( 'token_secret' ); 
        $ this -> session -> unset_userdata ( 'status' ); 
        $ esto -> sesión ->'userData' ); 
        $ this -> session -> sess_destroy (); 
        
        // Redirigir a la página de inicio de sesión 
        redirect ( '/ user_authentication /' ); 
    } 
    
}

Modelos (aplicación / modelos /)

User.php
El modelo de usuario contiene una función llamada checkUser()Este método se utiliza para insertar o actualizar los datos del perfil de usuario en la base de datos.
<? php if (!  defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 

clase de  usuario  se extiende  CI_Model  { 
    
    función  __construct () { 
        $ this -> nombreTabla     'usuarios' ; 
        $ this -> primaryKey      'id' ; 
    } 
    
    public function  checkUser ( $ data  = array ()) { 
        if (! empty ( $ data [ 'oauth_provider' ]) &&! empty ( $ data [ '])) { 
            $ 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 ->-> obtener (); 

            $ rowNum  $ consulta -> num_rows (); 
            
            if ( $ rowNum  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' =>$ prevResult [ 'id' ])); 
                
                // id de usuario 
                $ userID  $ result [ 'id' ]; 
            } else { 
                // 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 );
                
                
                -> db -> insert_id (); 
            } 
            
            // Devolver ID de usuario 
            devolver  $ ID de usuario ? $ userID : falso ; 
        } else { 
            devolver  falso ; 
        } 
    } 
    
}

Vistas (aplicación / vistas /)

user_authentication/index.php
Si el usuario ya inició sesión con su cuenta de Twitter, se muestran los detalles del perfil y los últimos tweets. De lo contrario, se mostrará el botón Iniciar sesión con Twitter .
<? php if (! empty ( $ error_msg )) { 
    echo  '<p class = "error">' . $ error_msg . '</p>' ;    
} ?> 
<? php  if (! empty ( $ userData )) {  ?> 
  < div  class = "wrapper" > 
      < h1 > Detalles del perfil de Twitter </ h1 > 
      < div  class = "welcome-txt" > Welcome < b > ?> </ b > </ div > 
      < div  class = "tw-box" > 
        <! - Mostrar información de perfil -> 
        < p  class = "img" > 
          < img  src = " <? php  echo  $ userData [ 'picture_url' ];  ?> " /> 
        </ p > 
        < p > < b > Nombre de usuario de Twitter: </ b > < ? php echo  $ userData ['nombre de usuario' ]; ?> </ p > 
        < p > < b > Nombre: </ b > <? php  echo  $ userData [ 'first_name' ]. '' . $ userData [ 'last_name' ]; ?> </ p > 
        < p > < b > Locale: </ b > <? php  echo  $ userData [ 'locale' ]; ?> <
        p > 
          < b > Twitter Perfil del enlace: </ b > 
          < un  href = " <? php  echo  $ userData [ 'PROFILE_URL' ];  ?> "  target = "_blank" > <? php  echo  $ userData [ 'PROFILE_URL' ] ; ?> </ a > 
        </ p > 
        < p > < b > Has iniciado sesión con: </ b >p > 
        < p > < b > Salir de < un  href = " <php?  eco  base_url ( 'user_authentication / cierre de sesión /' );  ?> " > Twitter </ una > </ b > </ p >
        
        <! - - Mostrar últimos tweets> 
        <? Php  (! Vacías (si $ tuits )) {  ?> 
        < Div  clase = "tweetList" > 
          < strong > Últimos tweets: </ fuerte > 
          < ul > 
          <? Php? 
            Foreach ( $ tweets   como  $ tweet ) { 
              '<li>' . $ tweet -> texto . '<br /> - <i>' . $ tweet -> created_at . '</i> </li>' ; 
            } 
          ?>
          
        </ Div > 
        <? Php  ?> 
      </ Div > 
  </ div > 
<? Php?  } Else {  ?> 
  <- despliegue de señal en el botón -> 
  < un  href = " <? Php?  Echo  $ oauthURL ? > " > < img  src = " <? php  echo  base_url ( ' asset / images / sign-in-with-twitter.png' );  ?> " /> </ a > 
< ? php ?>

Obtención de correo electrónico del usuario de la cuenta de Twitter

Básicamente, Twitter no devuelve el correo electrónico del usuario después de la autenticación. Para obtener la dirección de correo electrónico del usuario, su aplicación debe estar en la lista blanca de Twitter. 
Para obtener la dirección de correo electrónico del usuario de la API de Twitter y almacenarla en la base de datos, siga los pasos a continuación.
  • Utilice este formulario para enviar su solicitud a través del Centro de ayuda de Twitter. Sea paciente, tomará un tiempo aceptar su solicitud de Twitter.
  • Una vez que su aplicación de Twitter esté en la lista blanca, la casilla de verificación Solicitar direcciones de correo electrónico de los usuarios estará disponible bajo el permiso de la aplicación en la página Administración de aplicaciones. Seleccione esta casilla de verificación.
  • Bajo la configuración, estarán disponibles los campos URL de la Política de privacidad y URL de los Términos de servicio. Si está habilitado, se informará a los usuarios que su aplicación puede acceder a su correo electrónico en el cuadro de diálogo OAuth.
  • Actualice la configuración de su aplicación de Twitter.
Ahora, el correo electrónico se puede recuperar de la API de Twitter después de la autenticación.
En el index()método del controlador User_Authentication, implemente los siguientes cambios:
  • Agregar include_emailparámetro en el get()método de la clase TwitterOAuth.
    $ userInfo  $ twitteroauth -> get ( 'account / verify_credentials' , [ 'include_email'  =>  'true' ]);
  • El campo de correo electrónico estará disponible en $ userInfo que devolvió la API de Twitter. Especifique el campo de correo electrónico ( $userInfo->email) en $userDatapara insertar la dirección de correo electrónico en la base de datos.
    'email'  =>  $ userInfo -> email

Conclusión

Aquí hemos intentado facilitar la integración de inicio de sesión de Twitter para la aplicación web CodeIgniter. ¡Esperanza! El código de ejemplo le ayudará a implementar fácilmente el inicio de sesión de Twitter en CodeIgniter utilizando la biblioteca OAuth. Nuestra biblioteca OIuth Twitter CodeIgniter permite al usuario iniciar sesión en el sitio web utilizando su cuenta de Twitter. Además, puede almacenar la información de la cuenta de Twitter del usuario en la base de datos MySQL.

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.