在我的应用中,我使用Picasso library从网址加载图片。 它是一个很好用的易于导入和可用的库,只需做我需要的东西。
然而,今天它停止了工作,而不是在开发它时停止在编译的apk上工作。
所以在我搜索并搜索了我发现这个有问题的东西的原因之后:
我使用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
当然,两个网址都在浏览器中运行,您可以看到个人资料图片。
然而,当我用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无法从图形中加载图像。
有人可以建议我做些什么吗? 当然,我可以尝试不同的库,但如果还有其他方式,我会非常高兴。
答案 0 :(得分:43)
<强> Workaround1:强>
从http。
更改为 https工作: https://graph.facebook.com/1464090949/picture?type=large
不工作: http://graph.facebook.com/1464090949/picture?type=large
<强> Workaround2:强>
在this主题上找到了解析。
如果您想要例如: 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
}
}
}
tada!它就是。 url的密钥是您可以用来加载图片的重定向网址。
(这将需要oAuth ,我没有测试过,只需坚持使用Workaround1)
答案 1 :(得分:5)
试试这个。完美地为我工作
依赖关系:编译&#39; com.squareup.okhttp:okhttp:2.5.0&#39;
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);
答案 2 :(得分:0)
如果您像我一样使用Amazon AWS CloudFront,您可以访问此页面,获取亚马逊有关如何设置URL转发的详细说明。
至少,毕加索要使用重定向的网址,您的网址必须支持https。那是。 https://yourdomain.com应重定向到https://yourAWScloudfrontdomain.net