[英]Loading Facebook profile picture securely
我正在嘗試將來自Facebook的用戶個人資料圖片包含在內,但工作正常,但事情就是當您想要將其包含在受SSL保護的頁面上時。 我找不到從安全位置加載圖片的方法。 使用以下鏈接到用戶個人資料pic:
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協議安全地加載個人資料圖片?
謝謝!
將return_ssl_resources=1
添加到Graph調用中:
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托管的圖像。
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中做到這一點!!!!
您可以通過自己的服務器代理它。 設置一個腳本,從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。
您還可以批量獲取安全配置文件圖片,在這種情況下,您必須添加return_ssl_resources = 1參數作為@ josh3736提到。
https://graph.facebook.com/?ids=id1,id2,id3,...&fields=picture&return_ssl_resources=1
使用***http***://graph.facebook.com/Bazze/picture?type=square
而不是**https**://graph.facebook.com/Bazze/picture?type=square
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.