Comunidad de diseño web y desarrollo en internet online

Copiar imagen de Facebook en mi servidor

Citar            
MensajeEscrito el 13 Jun 2011 11:42 am
Buenas, en una aplicación que estoy desarrollando obtengo las urls de mis fotos de facebook, y quiero poder subir una de esas fotos a mi servidor web.

Lo único que he encontrado para subir archivos es fileReference con php, pero esto abre un browser y no es lo que necesito. Necesito subir a mi servidor la imagen de una determinada url en la web.

No soy muy experimentado, alguien que me ayude, por favor. muchas gracias!

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jun 2011 01:49 pm
En realidad si le pasas el nombre al script de PHP, puedes usar copy siempre que tu servidor soporte rutas con HTTP (muchas veces eso esta deshabilitado en los shared host), lo otro es que facebook permita copiar (es decir la imagen tenga permisos)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Jun 2011 03:08 pm
Muchas gracias Jorge, he estado intentando hacerlo con copy e incluso con move_uploaded_file que vi por ahí y no. Me arroja el siguiente error:
Error #2044: securityError no controlado: text=Error #2048: Violacion de la seguridad Sandbox.

Tendré que configurar el servidor como tu dijiste? mmm no se como se hace, igual seguro esta posteado por ahí, pero será eso?
Disculpa por abusar de tu tiempo, muchas gracias!!

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jun 2011 03:13 pm
Ese es un error de Flash, y a menos que Facebook tenga un crossdomain.xml que te autorice (no lo tiene, sino no tendrías el error), lo que digo es que lo tienes que hacer totalmente en PHP. Si es Flash el que sabe la URL, invocas el script usando un URLLoader (aunque no tengas nada que cargar, cuanto mucho un ok si lo pudo hacer) Si no sabes que es un URLLoader, mirate http://flash-db.com/Tutorials/savingAS3/savingData.php?page=1

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Jun 2011 07:32 pm
Muchas gracias Jorge, y perdona que sea tan duro, pero soy inexperto, me dices: "lo que digo es que lo tienes que hacer totalmente en PHP", que cosa tengo que hacer en PHP si de hecho el script ya lo estoy cargando usando URLLoader (que también lo vi en un posteo tuyo, gracias indirectamente, eres un crack!), pero me tira ese error, que es lo que tengo que hacer "todo" en php?

Felipe.

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jun 2011 07:41 pm
La idea es esta>

- Flash llama a un script de PHP y le pasa la ruta de la imagen a copiar
- PHP copia la imagen al servidor y le dice a flash si pudo o no

Lo que va a hacer PHP básicamente es

copy("http://fecebook.com/carpeta/imagen.jpg", "/imagenes/imagen.jpg");

Para que PHP pueda hacer esto tiene que tener permisos de lectura de donde toma la imagen y de escritura donde la escribe, además de que el uso de wrappers HTTP (el primer argumento de copy) esté habilitado en el servidor de origen. Usualmente está deshabilitado para evitar que se haga justamente esto (copiar contenidos de otras web), ya que ser{ia muy fácil tirar un script que se "chupara" el contenido de una URL. En otras palabras: lo que quieres hacer no le gusta nada a facebook. Eso no quiere decir que no se pueda, pero te lo pondrá difícil, de eso no tenga dudas. Con Flash es imposible, el crossdomain no te autoriza a bajarte la imagen

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Jun 2011 11:59 pm
Estimado, no quería seguir molestandote pero no encontré como habilitar el wrappers http de mi servidor.

mi PHP:
<?php
if (isset($_GET['archivo']) ){
$archivo=trim(addslashes($_GET['archivo']));
}else{
exit;
}
set_time_limit ( 1200 );

$destino="imagenes/photo.jpg";
copy( $archivo , $destino );
exit;
?>

Si me pudieras explicar o darme un link donde salga explicado, muchas gracias!

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Jun 2011 10:37 am
Prueba primero si funciona, ni siquiera hace falta el flash, hardcodea las rutas en un PHP y ejecuta a ver si anda

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Jun 2011 10:28 pm
Jorge, gracias por todas tus respuestas.
El wrappers http tendría que estar habilitado en mi servidor? o eso lo tendría que tener habilitado el servidor donde están alojadas las imágenes de facebook?, y no lo está.

Voy a estar probando en php, si me resulta posteo como lo hice por si alguien más esta jugando con la API de facebook.

gracias!

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Jun 2011 11:36 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Jun 2011 04:05 am
Si sirve de algo, con esto leo a gusto los datos de FB.

Security.loadPolicyFile('http://api.facebook.com/crossdomain.xml');
Security.allowDomain('http://profile.ak.fbcdn.net');
Security.allowInsecureDomain('http://profile.ak.fbcdn.net')

context = new LoaderContext();
context.checkPolicyFile = true;

y en algun urlloader va
URLLoader = new URLLoader( urlrequest, context);

Por nykko

23 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Jun 2011 06:06 am
Hola nykko! gracias por la respuesta, pero en la parte deURLLoader me dice que sólo acepta un parámetro de tipo URLRequest, entonces no sé donde poner el context para poder probar el código.

Qué datos tú puedes leer con esto? las imágenes y todo?
Las imágenes que me da la api de facebook son de este tipo http://a7.sphotos.ak.fbcdn.net/...

Jorge: tiene algo que ver esto? http://online-source.net/2010/11/22/wrapper-is-disabled-in-the-server-configuration-by-allow_url_fopen0-in/
Que archivo en particular es el que hay que modificar en el servidor, el php.ini? y que hay que agregar o editar, muchas gracias!

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Jun 2011 10:14 am
es que abrevie la sentencia, seria algo asi:

Código ActionScript :

var loader:URLLoader = new URLLoader( new URLRequest([b] "http://www....."[/b] ), context ) ;


lo que esta en negrita va reemplazado por tu url de la imagen o bien la escribis a mano entre comillas para ir probando si carga.

Por nykko

23 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Jun 2011 01:32 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Jun 2011 07:34 am
nykko, lo que decía era que Flash Builder 4.5 me dice que hay un error, que URLLoader() sólo acepta un argumento. Entonces no sé donde poner la variable context.

Gracias por las respuestas.

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Jun 2011 09:22 am
Lo que logré hacer es en PHP con Curl copiar una imágen de facebook en mi servidor pero poniendo explicita la url en el php. Ahora lo que me faltaría es poder a través de Flash pasarle la url, donde aún me sigue dando error con la violación del sandbox, y aún no puedo probar la solución que me dió Nykko por lo que posteaba antes.

Gracias a Jorge y Nykko, son grandes!

Por pipetrucci

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Jun 2011 06:10 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Jun 2011 08:58 am
Hola amigos, logré solucionar mi problema, este es el código que me quedó:

Security.loadPolicyFile('http://api.facebook.com/crossdomain.xml');
Security.allowDomain('http://profile.ak.fbcdn.net');
Security.allowInsecureDomain('http://profile.ak.fbcdn.net')

var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;

var preLoader:Loader = new Loader();
preLoader.load(new URLRequest("subir_fb.php?archivo=" + usarFoto.source.toString()),context);

Es parecido a lo que me dijo Nykko pero con Loader, no con URLLoader.

El proble que tengo ahora, es que la imágen se guarda en mi servidor pero flash me arroja el siguiente error:
SecurityError: Error #2000: No hay ning�ntexto de seguridad activo.

He intentado solucionarlo pero no entiendo a qué se debe, ya que además de guardar la foto no hago nada más.

Tienen alguna idea de por qué ese error?

Muchas gracias, Felipe.

Por pipetrucci

10 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.