La biblioteca de Picasso dejó de funcionar hoy con los acoplamientos del cuadro del gráfico del facebook
En mi aplicación uso la biblioteca de Picasso para cargar imágenes de urls. Es una biblioteca muy fácil de usar y fácil de usar, y simplemente hacer lo que necesito.
Sin embargo, hoy dejó de funcionar, y no mientras se desarrolla se detiene trabajando en un apk compilado.
- ¿Cómo optimizo mejor Picasso en un GridView?
- Solución local de caché de imágenes para Android: Square Picasso vs Universal Image Loader
- Uso de Picasso con Image Getter
- Cómo cargar un mapa de bits con Picasso sin usar un ImageView?
- Cambiar el tamaño de la imagen a todo el ancho y la altura variable con Picasso
Así que después de buscar y buscar la razón que acaba de encontrar esta cosa buggy:
Utilizo URL de gráfico de Facebook para cargar imágenes de perfil.
Aquí hay uno como: perfil pictre ,
el enlace es en realidad " http://graph.facebook.com/1464090949/picture?type=large "
Pero está redirigiendo a: https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/t5.0-1/572518_1464090949_1222130273_n.jpg
Por supuesto, tanto de llamadas de url que trabajan en un navegador, y usted puede ver la imagen de perfil.
Sin embargo, cuando pruebo ambos enlaces con Picasso:
ImageView iv = (ImageView)findViewById(R.id.imageView1); //Url1 NOT working, loads nothing. String url1 = "http://graph.facebook.com/1464090949/picture?type=large"; //Url2 is the same as URL1, i just copied it from a browser, and this is working String url2 = "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/t5.0-1/572518_1464090949_1222130273_n.jpg"; Picasso.with(this).load(url2).into(iv);
Así que la conclusión es, Facebook tal vez cambió algo y de ahora en adelante Picasso no puede cargar imágenes de la gráfica.
¿Alguien puede sugerirme algo para que esto funcione? Por supuesto que puedo probar diferentes bibliotecas, pero si hay otra manera sería muy feliz.
- ¿Cómo tratar con Picasso OutOfMemoryError?
- Cultivo de Picasso a una vista
- Obteniendo el ancho y altura de la imagen con la biblioteca picasso
- Cargar mapa de bits con RGB_565 a través de Picasso
- Picasso no puede cargar imágenes para alguna URL (sin caracteres especiales)
- Picasso para cargar matriz de bytes
- Compruebe si la imagen existe en Cache Picasso
- Los resultados de RecyclerView + Glide resultan en un lío
Solución 1:
Cambie a https desde http.
Trabajo: https://graph.facebook.com/1464090949/picture?type=large
No funciona: http://graph.facebook.com/1464090949/picture?type=large
Solución 2:
Se encontró soulution sobre este tema.
Si desea por ejemplo: http://graph.facebook.com/1464090949/picture?type=large
Esta foto de perfil se puede utilizar:
https://graph.facebook.com/1464090949/?fields=picture.type(large)
Que devuelve un objeto JSON:
{ "id": "1464090949", "picture": { "data": { "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/t5.0-1/572518_1464090949_1222130273_n.jpg", "is_silhouette": false } } }
¡Y tada! Ahí está. La clave de url es la URL redireccionada que puedes usar para cargar tus imágenes.
(Esto necesitará el oAuth que no probé, apenas palillo con la solución 1)
Prueba esto. trabajado para mí perfectamente
Dependencia: compilar 'com.squareup.okhttp: okhttp: 2.5.0'
Picasso.Builder builder = new Picasso.Builder(mContext); builder.listener(new Picasso.Listener() { @Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) { /*holder.getIvSpeakerPicture() .setImageDrawable(context.getResources() .getDrawable("your drawable id"));*/ } }); builder.downloader(new OkHttpDownloader(mContext)); builder.build().load(image).into(viewHolder.image);
En caso de que esté usando Amazon AWS CloudFront igual que yo, puede visitar esta página para obtener instrucciones detalladas de Amazon sobre cómo configurar el reenvío de URL.
Como mínimo, para que Picasso funcione con sus URL redireccionadas, las URL deben admitir https. Es decir. https://yourdomain.com debe redirigir a https://yourAWScloudfrontdomain.net