毕加索图书馆今天停止使用facebook图片图片链接

时间:2014-03-26 22:48:55

标签: android picasso

在我的应用中,我使用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无法从图形中加载图像。

有人可以建议我做些什么吗? 当然,我可以尝试不同的库,但如果还有其他方式,我会非常高兴。

3 个答案:

答案 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

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html#CNAMEsAndHTTPS