【问题标题】:Fatal error when POSTing an Instagram "like"发布 Instagram“赞”时出现致命错误
【发布时间】:2013-12-28 08:04:31
【问题描述】:

我正在开发一个 Instagram API 网站,我正在尝试通过 PHP 点赞一张照片。这是我下面的脚本。但如果我从浏览器调用它,我总是会得到这个:

致命错误:函数名必须是第12行中的字符串

<?php

    $url = "https://api.instagram.com/v1/media/XXXXXxXxx_xxxxxxxxxx/likes";
    $fields = array(
        'access_token'       =>      'xxxxxxx.xxxxxxx.xxxxxxxxxxxxxxxxx',
        'action'             =>      'like'
    );

    $curl = curl_init();

    curl_setopt($curl,CURLOPT_POST,1);
    curl_setopt($curl,CURLOPT_POSTFIELDS,$http_build_query($fields));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    echo curl_exec($curl);
    curl_close($curl);

?>

第 12 行是:

curl_setopt($curl,CURLOPT_POSTFIELDS,$http_build_query($fields));

如果我改变:

....$http_build_query[$fields]);

错误消失了,但没有输出,甚至没有发布。

【问题讨论】:

  • 去掉$,因为http_build_query是一个函数,而不是一个变量!

标签: php api curl error-handling instagram


【解决方案1】:

由于可以调用variable function,PHP 尝试调用名为$http_build_query 的函数。该变量未在您的代码中的任何地方定义,而是NULL。因此,您实际上是在尝试调用名称为 not 字符串的函数,这会导致 PHP 触发致命错误。

删除$:

curl_setopt($curl,CURLOPT_POSTFIELDS, http_build_query($fields));
                                     ^

您的代码中还缺少CURLOPT_URL 行。以下应该可能有效:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($curl);
curl_close($curl);

【讨论】:

  • 我爱你@amalmurali! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多