安全加载Facebook个人资料图片

时间:2011-02-16 15:17:47

标签: security facebook ssl https image

我正在尝试将来自Facebook的用户个人资料图片包含在内,但工作正常,但事情就是当您想要将其包含在受SSL保护的页面上时。我找不到从安全位置加载图片的方法。使用以下链接到用户个人资料照片:

https://graph.facebook.com/<FB_ID HERE>/picture?type=square

即使我使用 https ,它也不会被安全加载(浏览器说页面只是部分加密)。这并不奇怪,因为链接只是重定向到图像,例如我的个人资料图片:

https://graph.facebook.com/Bazze/picture?type=square

这将得到以下图片:

http://profile.ak.fbcdn.net/hprofile-ak-snc4/161513_633115680_6792455_q.jpg

请注意,这不是一个安全的位置。

任何人都知道如何通过 https 协议安全地加载个人资料图片?

谢谢!

7 个答案:

答案 0 :(得分:9)

Add return_ssl_resources=1到您的图表调用:

https://graph.facebook.com/<FB_ID>/picture?type=square&return_ssl_resources=1

这是获取SSL服务图像的正确方法;重定向将是具有适当SSL证书的https服务器。


更新:当您使用 https://graph.facebook.com 时,Facebook现在会自动重定向到https托管的图片,因此return_ssl_resources不再需要参数。

使用 http://graph.facebook.com 仍会获得一个http托管的图片。

答案 1 :(得分:2)

好吧,https://graph.facebook.com/Bazze/picture?type=square是302重定向到 http :// ....但请注意 https :// ...仍然有效( example)。

所以看起来一个解决方案是自己解析302,在适当的位置插入's',然后获取图像。但在缺点方面,上面的链接页面存在证书错误,并且没有一种好方法可以解决这个问题。

(我不是说这是好的答案......)

答案 2 :(得分:2)

  1. 这是一个安全的位置,它不是一个安全的重定向
  2. 您可以做的就是确保在调用图表api时使用安全请求,之后Facebook将接管通信并且无法可以完成。

答案 3 :(得分:2)

302重定向将具有Open Graph API文档中所述的图片URL。

你需要改变: / http profile.ak.fbcdn.net / 至: / https fbcdn-profile-a.akamaihd.net /

来自:/ http static.ak.fbcdn.net / to:/ https s-static.ak.fbcdn.net /

我真的认为FB应该在他们的API中做到这一点!!!!

答案 4 :(得分:1)

您可以通过自己的服务器代理它。设置一个脚本,从Facebook获取图像,然后通过SSL将其恢复给您。

例如

<?php
    $path=$_GET['path'];
    if (stristr($path, "fbcdn.")==FALSE && stristr($path, "facebook.")==FALSE)
    {
        echo "ERROR";
        exit;
    }
    header("Content-Description: Facebook Proxied File");
    header("Content-Type: image");
    header("Content-Disposition: attachment; filename=".$path);
    @readfile($path);
?>

取自

http://www.permadi.com/blog/2010/12/loading-facebook-profile-picture-into-flash-swf-using-open-graph-api/

通过https://yourdomainhere.com/proxy.php?path=URLENCODED-IMG-URI访问应该通过SSL返回userpic。

答案 5 :(得分:-1)

您还可以批量获取安全配置​​文件图片,在这种情况下,您必须将return_ssl_resources = 1参数添加为@ josh3736。

https://graph.facebook.com/?ids=id1,id2,id3,...&fields=picture&return_ssl_resources=1

答案 6 :(得分:-2)

使用***http***://graph.facebook.com/Bazze/picture?type=square代替**https**://graph.facebook.com/Bazze/picture?type=square