Hola, en este tutorial actualizaremos el estado de nuestro twitter a través de la 'API de Twitter' usando CodeIgniter. Recomiendo seguir paso a paso, en lugar de pasar por alto el tutorial. Vamos a profundizar en!
Al principio necesitamos editar algunas configuraciones predeterminadas dentro de la sección de configuración de CI.
Abre el sistema / aplicación / config / autoload.php y edita lo siguiente desde:
$ autoload ['bibliotecas'] = array (");
a:
$ autoload ['library'] = array ('database');
Esto cargará automáticamente la base de datos. A continuación, abrir database.php y editar la configuración de conexión de la base de datos - el nombre de
Su base de datos, usuario y contraseña. Como nombre usaremos ci_twitter_api.
Ahora abierto config.php y cambiar el base_url a su carpeta de CI. Mi carpeta se llama twitter_api.
En esa carpeta esta mi sistema carpeta. Así que mi base_url será:
$ config ['base_url'] = "http: // localhost / ci / twitter_api";
Debido a que vamos a trabajar con una base de datos, necesitaremos algunos datos para jugar. Abierto phpmyadmin o tu
herramienta de gestión de base de datos favorita y crear una nueva base de datos llamada ci_twitter_api. Ahora vamos a configurar una
nueva tabla usando la siguiente consulta SQL, pero atención, usa TU nombre de usuario y contraseña de Twitter.
CREAR TABLA SI NO EXISTE 'cuentas' ('id' int (11) NOT NULL AUTO_INCREMENT, 'username' varchar (120) NOT NULL, 'password' varchar (32) NOT NULL, 'active' int (11) NOT NULL, 'last_message' varchar (140) NOT NULL, CLAVE PRIMARIA ('id')) MOTOR = CARTA POR DEFECTO DE MyISAM = latin1 AUTO_INCREMENT = 3; INSERTAR EN 'cuentas' ('id', 'nombre de usuario', 'contraseña', 'activo', 'último mensaje') VALORES (1, 'SU NOMBRE DE USUARIO','TU CONTRASEÑA', 1,' No hay mensaje enviado ');
Haga clic en el DE ACUERDO botón en el lado derecho y la consulta debe ser procesada. Ahora tu estructura para la mesa.
cuentas Debería verse similar a la imagen de abajo..
Ir sistema / aplicación / modelos y crea un nuevo archivo llamado twitter_model.php.
Primero, declararemos dos variables globales en la parte superior.
var $ accounts_table = 'cuentas'; var $ update_url = 'http://twitter.com/statuses/update.xml';
Asi que $ accounts_table se refiere a la tabla que creamos justo antes, y $ update_url es la url que vamos a utilizar
para actualizar nuestro estado. Si Twitter cambia su URL de actualización, solo necesita editarla una vez aquí en lugar de cada vez que se use en el código.
Ahora crearemos nuestro primer método que simplemente devolverá la cuenta de usuario activa almacenada en la base de datos.,
basado en la fila activo y valor 1. He añadido esto porque algunas personas tienen dos o más Twitter
cuentas.
la clase Twitter_model amplía el modelo // obtener la cuenta de twitter activa de la base de datos, por fila active = 1 función getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => ' 1 ')) -> fila ();
Simplemente estamos usando registros activos
para recuperar la cuenta activa y devolver la fila afectada.
Siguiente paso, vamos a construir el método principal, el actualizar método. Esto usará nuestro
nombre de usuario, contraseña y por supuesto el mensaje que queremos enviar y actualizar nuestro estado en Twitter. Aparte de eso,
interpretará el HTTP_CODE El cual es devuelto por Twitter para decirnos si el estado fue actualizado
con éxito o no.
// actualizar el estado de twitter y el último mensaje en la función de éxito update_status ($ username, $ password, $ message) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status ='. urlencode ($ mensaje)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ username. ':'. $ password); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // si tuvimos éxito, necesitamos actualizar nuestro último_mensaje si ($ httpcode == '200') $ this-> db-> where ('active', '1'); $ this-> db-> update ($ this-> accounts_table, array ('last_message' => $ message)); volver VERDADERO else return FALSE;
A primera vista, el código anterior puede parecer un poco complicado, pero no es tan difícil de entender. La parte más importante es
Que usamos cURL para comunicarnos con Twitter. Es realmente genial
Biblioteca que nos permite enviar y recibir.POST HTTP datos de Twitter.
Ahora entonces curl_init Inicializa una sesión de CURL y toma la URL como parámetro. En nuestro caso, la actualización de estado.
URL de la API de Twitter.
Con curl_setopt Establecemos algunas opciones necesarias para la transferencia de cURL..
curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // si tuvimos éxito, necesitamos actualizar nuestro último_mensaje si ($ httpcode == '200') $ this-> db-> where ('active', '1'); $ this-> db-> update ($ this-> accounts_table, array ('last_message' => $ message)); volver VERDADERO else return FALSE;
En esta parte estamos ejecutando la transferencia con curl_exec () y recuperando el devuelto HTTP_CODE
utilizando curl_getinfo (CURLINFO_HTTP_CODE). Esta HTTP_CODE nos dice si la actualización de estado fue completada o no.
El código '200' significa que funcionó y la actualización se realizó. Puede ver una lista completa de códigos de estado HTTP
aquí.
Si obtenemos '200' devueltos por Twitter, enviamos una consulta a nuestra base de datos que actualiza nuestra última fila de mensajes, y finalmente
regresamos CIERTO. Si no se devuelven 200, simplemente regresamos. FALSO.
Para terminar nuestro twitter_model Vamos a crear un último método que obtendrá el Ultimo mensaje nosotros enviamos. Necesitamos
este método porque mostraremos nuestro mensaje más reciente en una vista.
// obtener el último mensaje, por fila activa = 1 función getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> row () -> last_message; return htmlspecialchars ($ last_message);
Este método es bastante simple. Selecciona el Ultimo mensaje fila de nuestra cuenta activa y lo devuelve
convertido con htmlspecialchars a entidades HTML.
Nuestro twitter_model.php ahora se ve así:
la clase Twitter_model amplía el modelo var $ accounts_table = 'cuentas'; var $ update_url = 'http://twitter.com/statuses/update.xml'; // obtener la cuenta de twitter activa de la base de datos, por fila active = 1 función getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) - > fila (); // actualizar el estado de twitter y el último mensaje en la función de éxito update_status ($ username, $ password, $ message) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status ='. urlencode ($ mensaje)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ username. ':'. $ password); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // si tuvimos éxito, necesitamos actualizar nuestro último_mensaje si ($ httpcode == '200') $ this-> db-> where ('active', '1'); $ this-> db-> update ($ this-> accounts_table, array ('last_message' => $ message)); volver VERDADERO else return FALSE; // obtener el último mensaje, por fila activa = 1 función getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> row () -> last_message; return htmlspecialchars ($ last_message);
Ahora ve a sistema / aplicación / controladores y crea un nuevo archivo llamado twitter.php.
Vamos a añadir algunas líneas:
la clase Twitter extiende el Controlador función Twitter () parent :: Controller (); $ this-> load-> model ('twitter_model');
Este es un simple constructor de CI que carga nuestros twitter_model. Así estará disponible para nosotros dentro de todo el controlador..
Ahora viene el índice() método.
índice de función () $ data ['heading'] = '¡Hola, envía un tweet!'; $ data ['last_message'] = $ this-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ this-> twitter_model-> getActiveAccount () -> username; $ this-> load-> view ('header', $ data); $ this-> load-> view ('index'); $ this-> load-> view ('footer');
Estamos pasando información como un texto, nuestro último mensaje y el nombre de usuario del usuario activo a $ datos formación.
Gracias a nuestro twitter_model es muy fácil captar el último mensaje y el nombre de usuario activo. Al menos estamos cargando algo.
puntos de vista que crearemos después de que terminemos nuestro controlador. Vamos a construir el actualizar método.
// actualizando nuestro estado en la función de actualización de twitter (nuevo mensaje) () si ($ this-> input-> post ('submit')) $ this-> load-> library ('form_validation'); $ this-> form_validation-> set_error_delimiters ('',''); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); if ($ this-> form_validation-> run () == FALSE) $ this-> index (); else $ message = $ this-> input-> post ('message'); // obtener datos de cuenta de usuario $ cuenta = $ this-> twitter_model-> getActiveAccount (); $ nombre de usuario = $ cuenta-> nombre de usuario; $ contraseña = $ cuenta-> contraseña; // enviar un tweet si ($ this-> twitter_model-> update_status ($ username, $ password, $ message)) redirect ('twitter'); else $ data ['error'] = 'Se produjo un error al actualizar tu estado'; $ this-> load-> view ('header', $ data); $ this-> load-> view ('error'); $ this-> load-> view ('footer');
Esto puede volver a ser confuso pero lo repasaremos parte por parte.
if ($ this-> input-> post ('submit')) $ this-> load-> library ('form_validation'); $ this-> form_validation-> set_error_delimiters ('',''); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); if ($ this-> form_validation-> run () == FALSE) $ this-> index ();
Con $ this-> input-> post ('submit') Verificamos si el formulario fue enviado, el cual crearemos más adelante en nuestra vista principal
expediente. Después de eso, cargamos el form_validation Biblioteca porque queremos asegurarnos de que ciertas entradas requieren algunas reglas,
Como una longitud mínima y máxima de 5 y 140 caracteres. Además, estamos recortando el espacio en blanco con recortar y
configurando el campo como necesario Porque no necesitamos un mensaje vacío. La función establecer reglas Toma, como primer parámetro.,
El nombre del campo desde, nuestro caso. mensaje (que se creará pronto en la vista) y como segundo parámetro un humano
el nombre de este campo, que se insertará en el mensaje de error (se realizará en el archivo de vista).
Nosotros llamamos $ this-> form_validation-> run (), que puede volver CIERTO o FALSO. Si se rompió una regla que establecimos.
volverá FALSO y simplemente llamamos a nuestro índice() método. En los archivos de vista llamados por el método de índice () el
Los mensajes de error se mostrarán después de que hayamos creado nuestras vistas..
else $ message = $ this-> input-> post ('message'); // obtener datos de cuenta de usuario $ cuenta = $ this-> twitter_model-> getActiveAccount (); $ nombre de usuario = $ cuenta-> nombre de usuario; $ contraseña = $ cuenta-> contraseña; // enviar un tweet si ($ this-> twitter_model-> update_status ($ username, $ password, $ message)) redirect ('twitter'); else $ data ['error'] = 'Se produjo un error al actualizar tu estado'; $ this-> load-> view ('header', $ data); $ this-> load-> view ('error'); $ this-> load-> view ('footer');
Gracias a nuestro twitter_model, de nuevo es tan fácil recuperar el nombre de usuario y el contraseña del usuario activo actual.
Tambien podriamos hacer $ username = $ this-> twitter_model-> getActiveAccount () -> username Pero creo que para este tutorial esto es
un poco mas facil de entender.
Utilizando $ this-> twitter_model-> update_status () Llamamos al método que "hablará" a Twitter. Le dice a Twitter nuestra
nombre de usuario, contraseña y nuestro mensaje. Si el estado fue actualizado exitosamente, redirigimos, usando redirigir () desde el ayudante de url.
Si algo estuvo mal, configuramos un mensaje de error y cargamos algunos archivos de vista, que se crearán en el siguiente paso :).
El controlador ahora se ve así:
la clase Twitter extiende el Controlador función Twitter () parent :: Controller (); $ this-> load-> model ('twitter_model'); índice de función () $ data ['heading'] = '¡Hola, envía un tweet!'; $ data ['last_message'] = $ this-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ this-> twitter_model-> getActiveAccount () -> username; $ this-> load-> view ('header', $ data); $ this-> load-> view ('index'); $ this-> load-> view ('footer'); // actualizando nuestro estado en la función de actualización de twitter (nuevo mensaje) () si ($ this-> input-> post ('submit')) $ this-> load-> library ('form_validation'); $ this-> form_validation-> set_error_delimiters ('',''); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); if ($ this-> form_validation-> run () == FALSE) $ this-> index (); else $ message = $ this-> input-> post ('message'); // obtener datos de cuenta de usuario $ cuenta = $ this-> twitter_model-> getActiveAccount (); $ nombre de usuario = $ cuenta-> nombre de usuario; $ contraseña = $ cuenta-> contraseña; // enviar un tweet si ($ this-> twitter_model-> update_status ($ username, $ password, $ message)) redirect ('twitter'); else $ data ['error'] = 'Se produjo un error al actualizar tu estado'; $ this-> load-> view ('header', $ data); $ this-> load-> view ('error'); $ this-> load-> view ('footer'); else else redirect ('twitter');
Ahora vamos a crear nuestros archivos de vista. Ir sistema / aplicación / vistas y crea los siguientes archivos:
los header.php contendrá la meta información básica de html, nuestro enlace CSS y las etiquetas de apertura de nuestros divs principales,
#envoltura y #principal.
Usando la API de Twitter con CodeIgniter Estamos usando base_url () que configuramos para hacer referencia a nuestro archivo CSS, que se creará en el siguiente paso.
los footer.php simplemente contiene nuestras etiquetas de cierre.
los index.php es donde va la fiesta.
(cuenta: )
'update_form')); ?> 'mensaje', 'maxlength' => '140')); ?>
Todas las variables utilizadas aquí se pasan a través de la índice() Método desde nuestro controlador. Además de eso,
estamos usando el ayudante de formulario para crear un formulario html simple. Recuerda, te dije el error de manejo para el
el campo del mensaje se hará aquí; form_error ('mensaje') esta haciendo esa magia.
Debajo del formulario mostramos el último mensaje enviado por la cuenta del usuario activo.
Finalmente, el error.php se utilizará para un archivo de error personalizado en caso de que la actualización de estado no haya sido exitosa.
Para hacerlo un poco más bonito, agregaremos algo de CSS. Ir sistema/
y crea la carpeta css. Dentro de esa carpeta crea un archivo llamado style.css e insertar
el siguiente código.
/ * Restablecer CSS * / html, cuerpo, div, intervalo, objeto, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, dirección, código, img, pequeño, fuerte, dl, dt, dd, ol, ul, li, fieldset, forma, etiqueta margen: 0; relleno: 0; borde: 0; esquema: 0; tamaño de letra: 100%; alineación vertical: línea de base; fondo: transparente; body line-height: 1.5; Familia tipográfica: Arial, sans-serif; margen: 0; ol, ul, li estilo de lista: ninguno; tipo de estilo de lista: ninguno; .clear claro: ambos; / * DEFAULTS * / h3 color: # 35CCFF; tamaño de fuente: 20px; / * CUSTOM * / #wrapper width: 900px; margen: 0 auto; / * main * / #main margin-top: 50px; # main h3 span font-size: 14px; color: #cccccc; #main h3 a color: #cccccc; / * form * / #update_form input width: 888px; relleno: 5px; borde: 1px sólido # d3d3d3; bloqueo de pantalla; #update_form input [type = "submit"] width: auto; margen superior: 10px; color de fondo: # 000000 ;; frontera: ninguna; color blanco; tamaño de fuente: 12px; font-weight: negrita; cursor: puntero; relleno: 3px; div.error display: block; color de fondo: # FB8A8A; borde: 1px sólido # FF3B3B; relleno: 5px; color: #ffffff; ancho: 50%; margen inferior: 30px; font-weight: negrita; margen: 0 auto 10px auto; text-align: center; / * último mensaje * / #last_message fieldset border: 1px dashed # d3d3d3; relleno: 5px; margen superior: 30px; #last_message fieldset p padding: 5px; tamaño de fuente: 18px; fuente-peso: normal; #last_message legend span font-size: 12px;
Estoy usando el restablecimiento de CSS de Eric Meyers para neutralizar la vista en todos los navegadores. Tu aplicación ahora debería estar en la imagen de abajo.
Probemos nuestra nueva aplicación. Dejaremos caer un mensaje y pulsaremos el actualizar botón!
Después de la actualización se realizó:
Echemos un vistazo a Twitter :)
Si estamos violando una regla de validación de formulario al intentar enviar un mensaje vacío:
¡Realmente espero haberte ayudado un poco con el aprendizaje de CodeIgniter y cómo usar la gran API de Twitter! ¿Habrías hecho algo diferente? Si es así, háganoslo saber!