Мне нужно перевести эту команду cURL в код PHP cURL:
> curl --get 'https://api.twitter.com/1/followers/ids.json' --data > 'cursor=-1&screen_name=somename' --header 'Authorization: OAuth > oauth_consumer_key="key", oauth_nonce="nonce", > oauth_signature="signature", oauth_signature_method="HMAC-SHA1", > oauth_timestamp="timestamp", oauth_token="token", oauth_version="1.0"' > --verbose
Я пробовал это, но он не работает:
> $ch = curl_init(); > curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth oauth_consumer_key="key", oauth_nonce="nonce", oauth_signature="signature", oauth_signature_method="HMAC-SHA1", oauth_timestamp="timestamp", oauth_token="token", oauth_version="1.0"')); > curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); > curl_setopt($ch, CURLOPT_VERBOSE, 1); > curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); > curl_setopt($ch, CURLOPT_HTTPGET, 1); > curl_setopt($ch, CURLOPT_URL, 'https://api.twitter.com/1/users/show.json?cursor=-1&screen_name=somename'); > $page = curl_exec($ch); > curl_close($ch);
ошибка, которую я получаю
Проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Подробности: ошибка: 14090086: SSL-процедуры: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена
однако он работает в стандартной команде curl
Вам необходимо предоставить завиток цепочкой сертификатов, которая позволит проверить SSL-сертификат Twitter как действительный. Для этого загрузите необходимые подписывающие сертификаты и сохраните их в простой файл (предположим, вы cacert.pem
его cacert.pem
).
Затем перед выполнением запроса установите CURLOPT_CAINFO
чтобы указать на этот файл:
// assumes file in same directory as script curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem');
Также рекомендуется явно включить проверку сертификата SSL вместо того, чтобы полагаться на настройки по умолчанию:
curl_setopt($ch, CURLOPT_VERIFYPEER, true);