PHP - 在 Google Compute Engine 中检索 Facebook 图像

Posted

技术标签:

【中文标题】PHP - 在 Google Compute Engine 中检索 Facebook 图像【英文标题】:PHP - Retrieve Facebook image in Google Compute Engine 【发布时间】:2016-10-27 03:27:27 【问题描述】:

我尝试使用 file_get_contents 和 curl 检索我的 Facebook 个人资料图片的图像数据。

问题出现在我的 Google 计算引擎实例上,而在任何其他服务器(localhost - mamp、AWS)上,脚本都可以正常工作。

我正在使用的脚本之一的示例

<?php

var_dump(
    json_decode(
        file_get_contents("https://graph.facebook.com/_FACEBOOK_ID_/picture?width=720&height=720")
    )
);

请记住,我已尝试使用参数 redirect=false,并且访问我在 json 响应中获得的图像 url 也返回 false。

另外,我尝试在 SSH 中使用 wget 到图像的 url,它返回 (403) Forbidden。

我的假设是我需要在我的服务器中配置一些不同的东西,而不是 PHP,但是因为我能够使用相同的脚本检索任何其他图像 - 我不确定是什么。

【问题讨论】:

如果没有设置有效的用户代理,一些网站会拒绝交付内容。我曾经遇到过这个问题,并通过在 curl 中设置 Firefox 用户代理标头来解决它。 【参考方案1】:

我已经遇到过这个确切的问题, 在使用 cURL 时忽略 SSL 验证对我有用。

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Ignore SSL verification
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/_FACEBOOK_ID_/picture?width=720&height=720");
$data = curl_exec($ch);
curl_close($ch);

var_dump($data);

【讨论】:

以上是关于PHP - 在 Google Compute Engine 中检索 Facebook 图像的主要内容,如果未能解决你的问题,请参考以下文章

Google Compute Engine - 克隆实例

ImportError:没有名为 google_compute_engine 的模块

ruby Google Compute Engine快照在Ruby中创建和旋转

如何在 Google Compute Engine 上运行 Docker?

连接 Google App Engine 和 Google Compute Engine

使用 Go 在 Google Container/Compute Engine 中登录到 Google Cloud