我正在尝试将来自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 协议安全地加载个人资料图片?
谢谢!
答案 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)
答案 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);
?>
取自
通过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