Debo reconocerlo, tengo un poco de obsesión con la característica de Instagram de poder subir fotos a diferentes servicios. La aplicación para iPhone de Instagram me permite tomar fotos y rápidamente aplicarles un filtro; y una vez que los retoques de la foto están completos, puedo subir la foto a Instagram, Twitter, Facebook y Flickr. Este proceso me hizo preguntarme, qué haría falta para subir fotos a Flickr usando PHP. En este artículo os detallo cómo autentificaros en la plataforma y subir fotos a Flickr usando PHP con phpFlickr.
Paso 1: Creación de la key para la aplicación de Flickr
Al igual que con el uso de otras APIs, antes de nada debes ir a Flickr para inscribirte y solicitar una key para la API. Introduce una buena descripción y un título y acepta las condiciones de la API para que otorguen la clave y la clave secreta que más tarde usuarás en el desarrollo.
Paso 2: Descarga phpFlickr
phpFlickr es una librería de PHP para utilizar la API de Flickr. Si bien, la librería no es perfecta (parece que hay redirecciones que tardan más de lo debido o que simplemente son infinitas), se resuelve muy bien para todo tipo de usos con la interfaz API de Flickr.
Paso 3: Configuración y autenticación
Es más fácil de entender el proceso si le echas un vistazo al código del desarrollo:
// Iniciamos las sesiones porque phpFlickr las utiliza pero no las inicia por si mismo session_start(); // Incluimos la API de phpFlickr require_once('phpFlickr-3.1/phpFlickr.php'); // Creamos un nuevo objeto de phpFlickr: new phpFlickr('[API Key]','[API Secret]') $flickr = new phpFlickr('[API KEY]','[API SECRET]', true); // Autenticacion; necesitamos de un "IF" u ocurrira un redireccion infinita if(empty($_GET['frob'])) { $flickr->auth('write'); // redirige si no existe; escribe el acceso para subir una foto } else { // Obtenemos el FROB token, refrescamos la pagina; sin refrescar, nos arrojara un error de "Invalid FROB" $flickr->auth_getToken($_GET['frob']); header('Location: flickr.php'); exit(); }
Después de iniciar las sesiones y de incluir la librería phpFlickr API, necesitamos crear una nueva instancia de phpFlickr, siempre y cuando tengamos en nuestro poder la clave de la API y la clave secreta. Con la instancia creada, utilizaremos un if que se encargará de reaccionar al parámetro frob que nos vendrá de Flcikr. Si no se nos proporciona el frob, se llamará al método de autenticación, que o bien confirma la autenticación o redirige al usuario a Flickr para que ingrese la sesión. Si se proporciona un frob, el token de autenticación se establece y la página necesita ser refrescada (ACLARACION: No estoy seguro de por qué hay que hacer una redirección, pero era la única manera de garantizar que la autenticación se llevaba a cabo).
Paso 4: Carga de un archivo
Subir una imagen a Flickr es en realidad mucho más fácil con phpFlickr que la propia autenticación. Subir un archivo es tan sencillo como llamar a una función:
// Enviar una imagen sync_upload (foto, título, descripción, etiquetas) // El valor devuelto es un identificador que representa la foto $ result = $flickr->sync_upload ('logo.png', $ _POST ['title'], $ _POST ['description'], 'Jorge Lopez, programacion, flickr, tutorial, php, API');
El método sync_upload permite muchos parámetros, pero la imagen, título, descripción y etiquetas son los más destacados. También hay un async_upload que también puede ser utilizada. phpFlickr también permite el acceso de lectura rápida de modo que puedes crear una presentación de fotos, etiquetas, etc., así que no creo que phpFlickr sea solo para subir imágenes
En mi primer intento de crear un script PHP/Flickr de manera independiente fallé estrepitosamente debido a que necesitaba de OpenAuth. phpFlickr hace un gran trabajo gestionando todo el proceso, y la documentación es bastante decente para comenzar. Me encontré con un par de problemas de "demasiada redirección" (solucionado por el "if" que os he explicado antes) y un error "invalida frob" (el cual parece que se solucionaba refrescando la página). Pero pese a todo, phpFlickr es la elección correcta.