HTMLeando: para desarrolladores Web

Pregunta


¿Cómo subo fotos a Flickr usando phpFlickr? 

Responder esta pregunta por maikel el 2008-11-10
Estoy tratando de usar la clase PHP phpFlickr para la API de Flickr y no he logrado subir foto alguna, devolviendo la respuesta siguiente:
<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="fail">
	<err code="99" msg="Insufficient permissions. Method requires write privileges; none granted." />
</rsp>

El código php utilizado es el siguiente:
$f = new phpFlickr("mi-api-key", "mi-contraseña");
$f->sync_upload ( "foto.jpg", "Descripción de la foto", "tag1 tag2", 1);

¿Cómo lograr los permisos de escritura?

Respuestas

Thumb_up
Thumb_down

0%
0%
El caso es que no bastaba con la apikey, sino que además tenía que autenticarme en Flickr como usuario que autoriza a mi aplicación, de manera tal que Flickr devuelve a mi aplicación el parámetro frob, para luego solicitarle un token que me permitiera invocar los métodos que necesitan permiso de escritura, tal es el caso de subir fotos.
O sea debía haber configurado el fichero auth.php
<?
    $api_key                 = "[mi api key]";
    $api_secret              = "[mi api secreta]";
    $default_redirect        = "/miaplicacion/subir.php";
    $permissions             = "write";
    $path_to_phpFlickr_class = "../clases/";
 
    ob_start();
    require_once($path_to_phpFlickr_class . "phpFlickr.php");
    unset($_SESSION['phpFlickr_auth_token']);
 
	if (!empty($_GET['extra'])) {
		$redirect = $_GET['extra'];
	}
 
    $f = new phpFlickr($api_key, $api_secret);
 
    if (empty($_GET['frob'])) {
        $f->auth($permissions, false);
    } else {
        $f->auth_getToken($_GET['frob']);
	}
 
    if (empty($redirect)) {
		header("Location: " . $default_redirect);
    } else {
		header("Location: " . $redirect);
    } 
?>

Mientras que en mi script subir.php para subir las fotos tenía que comprobar si estaba o no autenticado.
<?php
$path_to_phpFlickr_class = "../clases/";
$api_key                 = "[mi api key]";
$api_secret              = "[mi api secreta]";
require_once($path_to_phpFlickr_class . "phpFlickr.php");
 
$f = new phpFlickr($api_key, $api_secret);
if(!$f->test_login()) header("Location: /miaplicacion/auth.php");
$f->sync_upload ( "foto.jpg", "Descripción de la foto", "tag1 tag2", 1);
?>

Es importante haber configurado en "API Key Authentication Setup" el parámetro Callback URL para que Flickr sepa a que dirección devolver el parámetro frob, para este caso http://www.ejemplo.com/miaplicacion/auth.php

por maikel el 2008-11-12

Thumb_up
Thumb_down

0%
0%
Muy útil, muchas gracias
por Anónimo el 2009-11-05

Anónimo:   Entrar


Consejo: Sé tan específico y descriptivo como puedas. Comparte tu experiencia personal o tus conocimientos.
Puedes investigar para completar tu respuesta.

Puedes poner directamente trozos de código usando las etiquetas [code=php] y [/code] o incrustar desde Snipplr.com [snippet=id_snippet]

Compartir: WebeameMeneame Delicious Digg

Preguntas relacionadas