2013-08-02 2 views
0

누구나이 사이트 (http://www.ethnecity.church.ly/)에 사용 된 Wordpress 테마의 설정을 조정하여 트위터 섹션 (페이지 왼쪽 하단 근처)이 계정 대신 트윗을 표시 할 수 있음을 알고 있습니다. 트위터 계정의 타임 라인? 참고 : 플러그인은 OAuth를 사용하고 있습니다 ... 저는 타임 라인 대신 트윗을 표시하는 방법을 알지 못합니다. 사용자의 타임 라인을 검색 할 수 있도록트위터 OAuth 타임 라인이 아니라 트윗을 표시

<?php 
$user_screen_name = 'ethnecity'; 
$user_full_name = '(removed)'; 

$settings = array(
'consumer_key' => '(removed)', 
'consumer_secret' => '(removed)', 
'access_token' => '(removed)', 
'access_token_secret' => '(removed)'); 

$api_url = 'https://api.twitter.com/1.1/statuses/home_timeline.json'; 

$api_params = array(
'count' => 40, 
'contributor_details' => 'false', 
'include_entities' => 'false'); 

// OAuth: 

function oauth_encode($data){ 
if(is_array($data)){ 
return array_map('oauth_encode', $data); 
} else if(is_scalar($data)) { 
return str_ireplace(array('+', '%7E'), array(' ', '~'), rawurlencode($data)); 
} else { 
return ''; 
}} 

// OAuth base settings 

$oauth_params = array(
'oauth_consumer_key' => $settings['consumer_key'], 
'oauth_nonce' => md5(microtime() . mt_rand()), 
'oauth_signature_method' => 'HMAC-SHA1', 
'oauth_timestamp' => time(), 
'oauth_token' => $settings['access_token'], 
'oauth_version' => '1.0', 
); 

// Sign OAuth params 

$sign_params = array_merge($oauth_params, $api_params); 

uksort($sign_params, 'strcmp'); 

foreach ($sign_params as $k => $v) { 
$sparam[] = oauth_encode($k) . '=' . oauth_encode($v); 
} 
$sparams = implode('&', $sparam); 

$base_string = 'GET&' . oauth_encode($api_url) . '&' . oauth_encode($sparams); 

$signing_key = oauth_encode($settings['consumer_secret']) . '&' .  oauth_encode($settings['access_token_secret']); 

$oauth_params['oauth_signature'] = oauth_encode(base64_encode(hash_hmac('sha1', $base_string,  $signing_key, TRUE))); 


// Set Authorization header: 

uksort($oauth_params, 'strcmp'); 

foreach ($oauth_params as $k => $v) { 
$hparam[] = $k . '="' . $v . '"'; 
} 

$hparams = implode(', ', $hparam); 

$headers = array(); 
$headers['Expect'] = ''; 
$headers['Authorization'] = 'OAuth ' . $hparams; 

foreach ($headers as $k => $v) { 
$curlheaders[] = trim($k . ': ' . $v); 
} 

// Format params: 

foreach ($api_params as $k => $v) { 
$rparam[] = $k . '=' . $v; 
} 
$rparams = implode('&', $rparam); 


// echo "curl --get '" . $api_url . "' --data '" . $rparams . "' --header 'Authorization:   OAuth " . $hparams . "' --verbose" . PHP_EOL; 


// GET: 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $api_url . '?' . $rparams); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $curlheaders); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 

$response = curl_exec($ch); 
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
$info = curl_getinfo($ch); 
$error = curl_error($ch); 
$errno = curl_errno($ch); 
curl_close($ch); 


function get_twitterfeeds(){ 
global $code; global $response; 

if($code != 200){ 

//echo 'Error' . PHP_EOL; 
//echo $code . PHP_EOL; 
//print_r($response); 
//print_r($info); 

} else { 
$all = json_decode($response, true); 
//echo '<pre />'; 
// print_r($all); 
//exit; 
return $all; 
} 

} 




?> 

답변

1

귀하의 코드를 수정해야합니다

나는이 트위터 정보를 표시하는 코드입니다 생각합니다. 현재 코드에 따라 타임 라인에 트윗 만 표시됩니다.

사용자 또는 특정 사용자의 피드 만 필요한 경우 리소스 URL을 변경해야하는 방식으로 코드를 수정해야합니다.

$api_url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; 
    $api_params = array(
       'screen_name' => 'ethnecity' 
       'count' => 40, 
       'contributor_details' => 'false', 
        'include_entities' => 'false' 
       ); 

문서를 확인하십시오 https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline

관련 문제