Выводим список твитов любого пользователя Twitter

В данном подфоруме я буду выкладывать разнообразные украшения форума phpbb3, от смайлов до скриптов, от ВВ-кодов до различных полезных программ.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----
Ответить
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Выводим список твитов любого пользователя Twitter

Сообщение DeaDRoMeO »

Всем доброго времени суток и сегодня мы будем делать блок на форуме с твитами любого пользователя Twitter. В данной статье я покажу способ получения и вывод, но без украшательств, это уже на вашей совести :-00):

Как обычно, мы подразумеваем, что изначально вы получили все ключи Twitter и, разумеется знаете айди нужного пользователя данной социальной сети. Посему приступаем к правкам и открываем корневой index.php и находим

Код: Выделить всё

// Output page
page_header();
Вставляем перед найденным

Код: Выделить всё

			$twitter_timeline = 'statuses/user_timeline';
			$request = array(
				'screen_name'			=> 'BarkovskiisD',
				'count' 				=> 15,
				'contributor_details' 	=> 'true',
				'trim_user'				=> 'true',
			);
			$twit_index = returnTweet($twitter_timeline, $request);
			
			for ($c = 0; $c <= 15, !empty($twit_index[$c]); $c++) 
			{
				$twit_post = $twit_index[$c]['text'];
				$id_post = $twit_index[$c]['id'];
				$template->assign_block_vars('twit_i', array(
					'TWIT_POST'		=> $twit_post,
					'ID_POST'		=> $id_post,
				));	
			}
	
 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;
	}
 function returnTweet($twitter_timeline, $request)
	{
		$oauth_access_token         = 'ключ';
		$oauth_access_token_secret  = 'ключ';
		$consumer_key               = 'ключ';
		$consumer_secret            = 'ключ';     

		$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'
		);

        $oauth = array_merge($oauth, $request);

        $base_info             		= buildBaseString("https://api.twitter.com/1.1/$twitter_timeline.json", '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_HEADER => false,
                          CURLOPT_URL => "https://api.twitter.com/1.1/$twitter_timeline.json?". http_build_query($request),
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_SSL_VERIFYPEER => false);

        $feed = curl_init();
        curl_setopt_array($feed, $options);
        $json = curl_exec($feed);
        curl_close($feed);

		return json_decode($json, true);
	}
Тут будьте предельно внимательны, требуется ручное прописывание нужных параметров, а именно
  • Код: Выделить всё

    'screen_name'			=> 'BarkovskiisD',
    Тут прописываете айди нужного пользователя вместо BarkovskiisD
  • Код: Выделить всё

    'count' 				=> 15,

    Код: Выделить всё

    $c <= 15
    Это количество выводимых твитов
  • Код: Выделить всё

    $oauth_access_token         = 'ключ';
    		$oauth_access_token_secret  = 'ключ';
    		$consumer_key               = 'ключ';
    		$consumer_secret            = 'ключ';
    Тут вписываете ранее полученные ключи доступа
И, далее, в шаблоне index_body.html используете такую конструкцию для вывода

Код: Выделить всё

<!-- BEGIN twit_i -->
				
				<a href="https://twitter.com/тут айди пользователя/status/{twit_i.ID_POST}">{twit_i.TWIT_POST}</a>
				
<!-- BEGINELSE -->
				тут надпись на случай если нет записей у пользователя
<!-- END twit_i -->
Все это без HTML разметки, ее вы подгоняете индивидуально под свой стиль, моя задача была лишь описать сам способ получения и вывода информации из Твиттера, дерзайте :-0=)

ЗЫ. Вот так себе я оформил данный блок
22234.png
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#1
Ответить