来自facebook API的图片提供错误"错误的URL日期参数"

时间:2017-12-02 23:20:00

标签: php facebook facebook-graph-api

我有数千张来自facebook的图片存储在我的数据库中。但是最近我注意到存储在数据库中的图像返回了这个错误: "错误的URL日期参数"

似乎我们不应该长时间存储Facebook图片网址,因为它们可能会过期。

我的问题是:如果我拥有的唯一信息是旧图片网址,如何从facebook API获取更新的图片网址?也许我可以从旧URL中提取特定的数据ID,然后查询facebook API以获取新的URL?

以下是旧(已过期)网址的示例:

https://scontent.xx.fbcdn.net/v/t1.0-9/15380747_1075074945947776_5898791779893134744_n.jpg?oh=7d445f227aa1922bebce375eae991a05&oe=597D1B48

1 个答案:

答案 0 :(得分:1)

Ben已经对您的问题发表了评论,并可能对此主题进行重复:Facebook Image URL gets expired

我也偶然发现了这个问题,因此决定将图像下载到我们的服务器上以避免这种情况。无论如何,还有另一种选择。

如果您具有PPCA(公共页面内容访问)权限,则可以尝试获取照片的节点ID,并通过facebook图表api获取最新版本。

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("database","my_user","my_password","my_db");


// Obviously change this to match yours
$sql = "SELECT GROUP_CONCAT(CONCAT(username , '-',id) SEPARATOR ',') as grp FROM table";
$result =  $mysqli->query($sql);
$final_result = []
while($row = $result->fetch_assoc())
{
    array_push($final_result, $row['grp']);
}


$mysqli -> close();

这将导致以下图形查询:

https://graph.facebook.com/v6.0/1075074945947776?fields=picture

只需测试一下。就我而言,它为我提供了最新的有效URL。