tutorial programar programación para juegos fotograma for español codigos codigo botones actionscript-3 facebook

actionscript-3 - programar - programación actionscript 3



Cargar imagen de perfil de Facebook con Actionscript 3 (7)

Estoy tratando de cargar imágenes de perfil (imágenes de amigos) desde Facebook con AS3, pero parece que me estoy encontrando con un problema de seguridad.

Actualmente estoy usando la API "oficial" de Adobe Facebook para Actionscript 3, que funciona bien. Sin embargo, parece que tengo problemas para cargar imágenes de perfil cuando ejecuto mi aplicación en un navegador. Las imágenes se cargan bien cuando se ejecuta en Flash IDE.

Las imágenes se cargan desde https://graph.facebook.com y parece haber una política crossdomain.xml en ese dominio:

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" secure="false" /> <site-control permitted-cross-domain-policies="master-only" /> </cross-domain-policy>

En otras fuentes, descubrí que agregar un ContextLoader a mi objeto Loader al cargar la imagen debería resolver el problema, pero este tampoco parece ser el caso:

loader = new Loader(); // add some listeners here... loader.load( new URLRequest( "imageurl" ), new LoaderContext(true) );

No estoy muy seguro de cómo proceder en este momento. Esperaba que la API de Adobe Facebook proporcionara asistencia en esto, pero parece que no puedo encontrar nada que resuelva este problema.

Cualquier ayuda muy apreciada.

ACTUALIZAR:

Me acabo de dar cuenta de que cuando visito una de las imágenes en un navegador, en realidad me redirigen al CDN de Facebook donde se almacena la imagen real. Cuando codifico la url de la imagen con la URL redirigida, puedo cargar la imagen en el navegador. Parece que esto no es un problema de seguridad después de todo, sino un problema de redirección.

Si esto es un problema de redirección, entonces la pregunta sería; ¿Cómo puedo hacer que Flash Player cargue una imagen desde una URL redirigida?

ACTUALIZACIÓN 2:

Parece que la clase URLRequest tiene una propiedad followRedirects que solo está disponible en AIR.

ACTUALIZACIÓN 3:

Actualmente estoy usando un script PHP para obtener la URL redirigida, pero esto, por supuesto, está lejos de ser ideal y potencialmente una gran carga en mi servidor.


Dado que hay muchos dominios donde Facebook almacena sus fotos, escribí un pequeño script que usa el dominio de la imagen para cargar el archivo de política apropiado:

import com.adobe.net.URI; import flash.system.Security; var someFacebookImageUrl:String = "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash3/c66.66.828.828/s160x160/537210_440478782684964_233907781_n.jpg"; var uri:URI = new URI(someFacebookImageUrl); Security.loadPolicyFile(uri.scheme + "://" + uri.authority + "/crossdomain.xml");

Bueno, esto es que funciona no solo para las imágenes de perfil, sino para todas las imágenes que utiliza Facebook.

¡Espero que esto ayude a alguno de ustedes!

PD: la clase de URI es parte de la biblioteca de core as3: http://code.google.com/p/as3corelib/


Estoy usando dos llamadas a loadPolicyFile, ya que parece que hay 2 posibles CDN que utiliza Facebook. Esto funciona para mí, pero, por supuesto, es preferible una solución genérica, Facebook podría agregar otra CDN y las cosas dejarían de funcionar por sí mismas:

Security.loadPolicyFile(''http://profile.ak.fbcdn.net/crossdomain.xml''); Security.loadPolicyFile(''http://profile.cc.fbcdn.net/crossdomain.xml'');

La solución URLLoader sugerida por @Stiggler podría funcionar. No lo he intentado. Pero parece más pesado en comparación con el uso de un objeto Loader.


Me gustaría confirmar la solución de Martin aquí.

Mi caso va desde probar la aplicación en la plataforma AIR, que está bien y funciona muy bien, la imagen cargada con éxito.

Pero cuando lo transfiero a la aplicación de lienzo en Facebook, entonces me encuentro con un problema, las imágenes de perfil no aparecerán, no se puede cargar.

Uso lo que Martin sugiera aquí. Y si realiza un seguimiento de una redirección url, verá que los perfiles de las imágenes se encuentran en ese servidor CDN y no en Facebook, por lo que debe cargar el archivo de políticas de ese dominio de acuerdo con el entorno de seguridad de actionscript.

Gracias de nuevo.


Puede usar un URLLoader y cargar la imagen como un ByteArray. Esto parece funcionar independientemente de la redirección. A continuación, puede utilizar ByteArray como fuente para una imagen / mapa de bits o usar un cargador para cargar los bytes como lo haría con la url de la imagen en primer lugar.

Por ejemplo:

var urlRequest:URLRequest = new URLRequest("http://graph.facebook.com/id/picture"); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.addEventListener(Event.COMPLETE, completeHandler); urlLoader.load(urlRequest); function completeHandler(event:Event):void { var byteArray:ByteArray = loader.data; // Then either: bitmapImage.source = byteArray; // or: var loader:Loader = new Loader(); ... loader.loadBytes(byteArray); ... }


Tuve el mismo problema y parece que tiene que cargar manualmente el archivo de dominio cruzado del dominio al que se le redirige en actionscript. Por ahora, parece que todas las imágenes de perfil de Facebook finalmente se cargan desde el dominio http://profile.ak.fbcdn.net/ .

Acabo de agregar esta línea antes de cargar las imágenes:

Security.loadPolicyFile("http://profile.ak.fbcdn.net/crossdomain.xml");

Esto debería permitir cargar las imágenes redirigidas, siempre que el dominio de redirección no cambie. ;)


debería ser una cosa relativamente fácil de hacer, todas las imágenes de perfil de Facebook se pueden encontrar usando la raíz de la imagen de la API gráfica. como este enlace:

"http://graph.facebook.com/" + userid + "/ picture"


totalmente adivinando pero podrías usar URLLoader para obtener los datos de la llamada redirigida, luego analizarlos juntos en una imagen xD