【问题标题】:Whatsapp Business Cloud API returning empty string when trying to download mediaWhatsapp Business Cloud API 在尝试下载媒体时返回空字符串
【发布时间】:2023-01-13 10:17:36
【问题描述】:

在成功检索媒体 URL 并将其存储在文件请求的 $mediaURL 变量中后,我使用以下代码行 (PHP),但它返回一个空字符串。已经尝试使用邮递员并返回 500 内部服务器错误...

** 已编辑 **

self::writeLog('Media URL: '.$mediaURL);
self::writeLog('Preparing to download media - id: '.$media_id);

$curl = curl_init($mediaURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
    "Authorization: Bearer ".self::$auth_token,
);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

if (($resp = curl_exec($curl)) === false) {
    self::writeLog('cURL Error: '.curl_error($curl));
} else if ($resp == '') {
    self::writeLog('Empty string.');
    self::writeLog('URL: '.$mediaURL);
    self::writeLog('Headers: '.$headers[0]);
} else {
    self::writeLog($resp);
}
            
  • writeLog 只是我用来将这些消息写入 txt 文件的一种方法。

【问题讨论】:

  • 没有选项CURL_URL,它是CURLOPT_URL。您不需要同时指定它和 curl_init() 的参数,它们是相同的。看在神圣的份上,不要禁用 SSL 检查。您也永远不会调用 curl_exec()。
  • 检查你的 php 错误日志。正如@AlexHowansky 指出的那样,仅通过检查错误日志即可轻松识别此代码中的错误。
  • @AlexHowansky 我用更多细节和 CURLOPT_URL 更正更新了这个问题......
  • 使用 curl_getinfo() 和/或 CURLOPT_VERBOSE 调试连接。

标签: php api curl whatsapp


【解决方案1】:

我以前遇到过这个问题,原因是没有将 User-Agent 传递给 API 导致错误的值返回

我使用以下方法下载 whatsapp-cloud 媒体 & 它对我来说很好用

public function grabImage(string $url,string  $saveto) : bool {
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 400);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,CURLOPT_CUSTOMREQUEST , "GET");
    curl_setopt($ch,CURLOPT_ENCODING , "");

    $headers    = [];
    $headers[]  = "Authorization: Bearer " . self::$adminToken;
    $headers[]  = "Accept-Language:en-US,en;q=0.5";
    $headers[]  = "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36";
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $raw = curl_exec($ch);
    
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if((int)$httpcode == 200){
        // here save the $row content of file 
    }
    
    return false;
}

【讨论】:

  • 太感谢了!仅用户代理就成功了:)
  • 最受欢迎的!我对 WhatsApp 云和 WhatsApp 本地集成有一些经验,所以当您遇到任何问题时,请随时与我联系
【解决方案2】:

Actualmente La api de whatsapp mantiene el mismo problema

服务器错误:GET https://lookaside.fbsbx.com/whatsapp_business/attachments/?mid=46304d342814ss2641741&ext=167357463as8&hash=ATvWc0N0A77ljlFmJ4ihF4urnwIu0UBnVtHZeJKpq9AaXA 导致 500 Internal Server Error 响应:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 2022-12-18
    • 2019-10-02
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多