2016-11-06 24 views
0

のスクリーンネームの件数がで、リクエストURLのtwitterユーザータイムラインからツイートを取得しようとしています。続きTwitter API httpsリクエストがcurlで失敗しました

私が思うに、私は必要な値を提供し、必要なすべてのフィールドを生成している正確にTwitter上で言及したhttps://dev.twitter.com/oauth/overview/authorizing-requestsページ

は私のスクリプトです:

$param_string = 'oauth_consumer_key='.$consumer_key. 
     '&oauth_nonce='.$nonce. 
     '&oauth_signature_method=HMAC-SHA1'. 
     '&oauth_timestamp='.$timestamp. 
     '&oauth_token='.$token. 
     '&oauth_version='.$version. 
     '&screen_name='.rawurlencode($screen_name). 
     '&count='.$count; 

$base_string = 'POST&'.rawurlencode($url).'&'.rawurlencode($param_string); 
$signing_key = rawurlencode($consumer_secret)."&".rawurlencode($token_secret); 
$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $signing_key))); 

$auth = 'OAuth oauth_consumer_key="'.rawurlencode($consumer_key).'",'. 
    'oauth_nonce="'.rawurlencode($nonce).'",'. 
    'oauth_signature="'.rawurlencode($signature).'",'. 
    'oauth_signature_method="HMAC-SHA1",'. 
    'oauth_timestamp="'.rawurlencode($timestamp).'",'. 
    'oauth_token="'.rawurlencode($token).'",'. 
    'oauth_version="1.0"'; 

そして、私のカールリクエストスクリプト:

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($ch, CURLOPT_CAINFO, __DIR__."/ca-bundle.crt"); 
    curl_setopt($ch,CURLOPT_CAPATH,__DIR__.'/ca-bundle.crt'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: $auth")); 
    $output = curl_exec($ch); 

    if(curl_error($ch)) 
    { 
    echo 'HTTP error:' . curl_error($ch); 
    }else{ 
    echo "<pre>"; 
    var_dump($output); 
    } 
    curl_close($ch); 

私は自分のPHPスクリプトを実行している間、ツイートの代わりに以下のエラーを表示しています:

string(64) "{"errors":[{"code":32,"message":"Could not authenticate you."}]}" 

なぜ機能していないのか教えてください。

答えて

1

私は同じエラーが発生しましたが、それを解決しましたhash_hmac機能を渡しました。再度試して、次のようにあなたにhash_hmac機能を更新してくださいでした:

$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $signing_key,true))); 
+0

おかげで、それは私のために働いたの提案のために – Plycoder

+0

あなたは歓迎されています –

関連する問題