0

我只想向电报机器人 API 发送一个简单的请求,我的代码是:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
  CURLOPT_CUSTOMREQUEST => "POST",
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

返回:

cURL Error #:SSL certificate problem: self signed certificate

我不想使用任何 ssl。我不会为电报设置任何 webhook。这是一个简单的请求,我无法处理。请帮我

4

4 回答 4

1

我有同样的问题,可以通过将文件cacert.pem复制到我的服务器中,然后将 cacert 文件的路径插入到我的 PHP 脚本中来解决。就我而言,我将文件 cacert 放入我的 Web 服务器的驱动器 C,然后将此脚本插入我的 PHP 文件中:

CURLOPT_CAINFO => "C:\cacert.pem"

所以你的 PHP 脚本应该是这样的:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_CAINFO => "C:\cacert.pem",
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

您可以从以下位置下载文件cacert.pem

https://drive.google.com/open?id=1FCLH88MpKNLDXZg3pJUSAZ0BbUbNmBR2

如果您仍然感到困惑,您可以在我的 youtube 上查看我的完整教程视频:

https://youtu.be/UNERvcCz-Hw

于 2019-01-29T04:35:51.687 回答
0

电报 webhook 仅适用于 ssl。您可以简单地使用 cloudflare 免费 ssl。但它不适用于 .ir 域。您可以更轻松地获得更新。

<?php 

date_default_timezone_set("Europe/Berlin");
define('BOT_TOKEN', 'yourtoken');

define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
//get update
$content = file_get_contents("php://input");

//json array
$update = json_decode($content, true);
//chatid
$chatID = $update["message"]["chat"]["id"];
?>
于 2017-04-11T08:01:22.830 回答
0

您可以在 中使用CURLOPT_SSL_VERIFYPEER并将其设置为 false curl_setopt_array

CURLOPT_SSL_VERIFYPEER阻止 cURL 验证对等方的 SSL 证书。

希望它应该有所帮助。

于 2017-04-11T08:29:16.910 回答
0

如果您想使用方法并全面了解电报机器人的工作原理,只需将 url 放入浏览器并查看结果。

https://api.telegram.org/bot<token>/METHOD_NAME

对于您的问题,我认为您使用的是非常旧的 curl 库,请从此处获取最新的 cacert 文件并将其替换为旧的。如果您使用的是 xampp,请点击链接了解更多信息

于 2017-05-24T21:57:31.397 回答