5

このcURLコマンドをPHPcURLコードに変換する必要があります。

> 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コマンドでは機能します

4

1 に答える 1

2

TwitterのSSL証明書が有効であることを確認できるようにする証明書チェーンをcurlに提供する必要があります。これを行うには、ここから必要な証明書の署名をダウンロードして、プレーンファイルに保存します(名前を付けたと仮定します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 に答える