2012-11-06 6 views
0

나는이 코드 조각을 사용하여 내 사이트에 인쇄하기위한 모든 최신 트윗을 가져 오지만 인증되지 않은 오류를 반환합니다. Dev 섹션에 앱을 만들고 내 소비자 및 OAuth 키를 가져 와서 코드의 적절한 위치에 추가했습니다.Twitter API PHP 최신 트윗을 인증하지 않음

<?php 
     function buildBaseString($baseURI, $method, $params) { 
      $r = array(); 
     ksort($params); 
     foreach($params as $key=>$value){ 
      $r[] = "$key=" . rawurlencode($value); 
     } 
     return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r)); 
     } 

     function buildAuthorizationHeader($oauth) { 
     $r = 'Authorization: OAuth '; 
     $values = array(); 
     foreach($oauth as $key=>$value) 
      $values[] = "$key=\"" . rawurlencode($value) . "\""; 
     $r .= implode(', ', $values); 
     return $r; 
     } 

     $url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=jameskrawczyk"; 
     $oauth_access_token = "SECURITY"; 
     $oauth_access_token_secret = "SECURITY"; 
     $consumer_key = "SECURITY"; 
     $consumer_secret = "SECURITY"; 

     $oauth = array('oauth_consumer_key' => $consumer_key, 
        'oauth_nonce' => time(), 
        'oauth_signature_method' => 'HMAC-SHA1', 
        'oauth_token' => $oauth_access_token, 
        'oauth_timestamp' => time(), 
        'oauth_version' => '1.0'); 



     $base_info = buildBaseString($url, 'GET', $oauth); 
     $composite_key = rawurlencode($consumer_secret) . '&' .  rawurlencode($oauth_access_token_secret); 
     $oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true)); 
     $oauth['oauth_signature'] = $oauth_signature; 



     $header = array(buildAuthorizationHeader($oauth), 'Expect:'); 
     $options = array(CURLOPT_HTTPHEADER => $header, 
         //CURLOPT_POSTFIELDS => $postfields, 
         CURLOPT_HEADER => false, 
         CURLOPT_URL => $url, 
         CURLOPT_RETURNTRANSFER => true, 
         CURLOPT_SSL_VERIFYPEER => false); 



     $feed = curl_init(); 
     curl_setopt_array($feed, $options); 
     $json = curl_exec($feed); 
     curl_close($feed); 
     $twitter_data = json_decode($json, true); 
     foreach ($twitter_data as $elem) 
     { 
      print_r($elem); 
      echo '<br>'; 
     } 

오류가

Array ([0] => Array ([message] => Could not authenticate you [code] => 32)) 

답변

2

대답

$url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=jameskrawczyk"; 

가 마지막에 ?screen_name=jameskrawczyk을 안 줄 것을 것처럼 보였다 페이지에 돌아왔다.

1

당신은 트위터
에서 데이터를 얻기 위해 라이브러리를 사용해야한다 "themattharris는"좋은 유명한 라이브러리는 단지 당신은 여전히 ​​사용할 수 있습니다 자신의 API 1.1 정보에 따르면 here

+0

에서 다운로드입니다 선호하지 않습니다. 심지어 사용 방법에 대한 예제를 제공합니다. – jskrwyk

+0

제 답변으로 투표하십시오. 더 이상 투표를하지 않아서 질문 할 수 없습니다. –

관련 문제