5

我需要将此 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证书是否OK。详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

但是它适用于标准 curl 命令

4

1 回答 1

2

您需要向 curl 提供证书链,以使其能够验证 Twitter 的 SSL 证书是否有效。为此,请从此处下载必要的证书签名并将它们保存到一个纯文件中(我假设您命名它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);
于 2012-09-17T13:17:48.597 回答