将Facebook用户个人资料图片保存到文件夹

时间:2015-08-02 06:11:04

标签: php facebook

我正在尝试将用户的个人资料图片保存到我的服务器中,但每当我执行我的代码时,它只会给我一个0字节的jpg文件。

这是我尝试但没有工作的第一个代码。

including

这是我从另一个线程获得的第二个代码

$fp = fopen ('fb_profilepic.jpg', 'w+');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://graph.facebook.com/875644792482183/picture');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow the redirection
curl_setopt($ch, CURLOPT_FILE, $fp); // write curl response to file
curl_exec($ch); // get curl response
curl_close($ch);
fclose($fp);

他们都给了我一个0字节的jpg文件。enter image description here

3 个答案:

答案 0 :(得分:0)

您正在寻找

file_put_contents("image.jpg",file_get_contents("http://graph.facebook.com/875644792482183/picture"));

答案 1 :(得分:0)

看起来似乎存在从httphttps的重定向,并且由于证书错误,OpenSSL无法处理它。为了解决这个问题,你可以这样做:

首先:检查将在default_cert_file密钥中的证书文件位置,您将在openssl_get_cert_locations()中找到它的php openssl函数:

$ php -r "print_r(openssl_get_cert_locations());"
Array
(
    [default_cert_file] => /opt/lampp/share/openssl/cert.pem
    [default_cert_file_env] => SSL_CERT_FILE
    [default_cert_dir] => /opt/lampp/share/openssl/certs
    [default_cert_dir_env] => SSL_CERT_DIR
    [default_private_dir] => /opt/lampp/share/openssl/private
    [default_default_cert_area] => /opt/lampp/share/openssl
    [ini_cafile] => 
    [ini_capath] => 
)

第二:下载http://curl.haxx.se/ca/cacert.pem

$ wget http://curl.haxx.se/ca/cacert.pem

第三:将证书PEM文件复制到default_cert_file位置:

$ sudo mv cacert.pem /opt/lampp/share/openssl/cert.pem

请注意,您的default_cert_file可能指向某个与此不同的位置。

答案 2 :(得分:0)

我实际上解决了相反的问题,将http://更改为https://。

curl_setopt ($ch, CURLOPT_URL, 'https://graph.facebook.com/875644792482183/picture');