Библиотека Пикассо перестала работать сегодня с графическими ссылками на facebook
В моем приложении я использую библиотеку Picasso для загрузки изображений из URL-адресов.
Это хорошо работающая легко импортируемая и полезная библиотека, и я просто делаю то, что мне нужно.
Однако сегодня он перестает работать, а не развивается, он перестает работать на скомпилированном apk.
Итак, после того, как я искал и искал причину, я просто нашел эту ошибку:
Я использую URL-адреса графиков facebook для загрузки изображений профиля.
Вот один из них:
profile pictre,
ссылка на самом деле "http://graph.facebook.com/1464090949/picture?type=large"
Но он перенаправляется на:
https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/t5.0-1/572518_1464090949_1222130273_n.jpg
Конечно, оба url-вызова работают в браузере, и вы можете видеть изображение профиля.
Однако, когда я проверяю обе ссылки с 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);
Итак, вывод заключается в том, что facebook может что-то изменить, и теперь Picasso не может загружать изображения из графика.
Кто-нибудь может предложить мне что-то сделать эту работу?
Конечно, я могу попробовать разные библиотеки, но если есть другой способ, я был бы действительно счастлив.
Ответы
Ответ 1
Workaround1:
Измените на https с http.
Рабочий:
https://graph.facebook.com/1464090949/picture?type=large
Не работает:
http://graph.facebook.com/1464090949/picture?type=large
Workaround2:
Найдена душа в этой теме.
Если вы хотите, например:
http://graph.facebook.com/1464090949/picture?type=large
Это изображение профиля, которое вы могли бы использовать:
https://graph.facebook.com/1464090949/?fields=picture.type(large)
Что возвращает объект 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
}
}
}
И тада! Вот оно. url key - перенаправленный URL-адрес, который вы можете использовать для загрузки изображений.
(Это будет нужно oAuth, которое я не тестировал, просто придерживайтесь Workaround1)
Ответ 2
Попробуйте это. отлично работал у меня.
Зависимость: скомпилировать '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);
Ответ 3
Если вы используете Amazon AWS CloudFront так же, как я, вы можете посетить эту страницу для получения подробных инструкций от Amazon о том, как настроить перенаправление URL.
По крайней мере, чтобы Picasso работал с вашими перенаправленными URL-адресами, ваши URL-адреса должны поддерживать https. То есть. https://yourdomain.com следует перенаправить на https://yourAWScloudfrontdomain.net
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html#CNAMEsAndHTTPS