Использование Twitter-API в PHP

Есть такая библиотека — twitter-async (лицензия — свободное распространение и использование).
Из неё нужно включить в проект файлы

  • EpiCurl
  • EpiOAuth
  • EpiSequence
  • EpiTwitter

Далее на twitter.com нужно завести приложение.
После успешной регистрации Twitter выдаст полезные данные для oAuth-авторизации, нужны из них два: Consumer key и Consumer secret — это авторизационные данные приложения, их нужно сохранить где-нибудь, к примеру, в базе.

Для работы с твиттером создаём обёртку:

class Twitter {
	public static function connect()
	{
		$twitter = self::$twitter;
		if (! $twitter)
		{
			$twitter = new EpiTwitter(
				self::get('consumer_key'),
				self::get('consumer_secret'),
				self::get('oauth_token'),
				self::get('oauth_token_secret')
			);
		}
		return $twitter;
	}
}

После этого нужно создать страничку, чтобы пользователь смог разрешить использовать свой аккаунт на твиттере созданному нами приложению.

<?
$error = array();
try
{
	// разрешил ли пользователь использовать твиттер
	if ( Twitter::get('oauth_token') )
	{
		$twitterInfo = $twitterObj->get_accountVerify_credentials();
		$twitterInfo->response;
	}
	else {
		$authorizationUrl = $twitterObj->getAuthorizeUrl();
	}
}
catch ( EpiOAuthException $e ) {
	$errors[] = Twitter::getExceptionError( $e );
}
catch ( EpiTwitterException $e ) {
	$errors[] = Twitter::getExceptionError( $e );
}
?>
<? if ( $twitterInfo ) : ?>
	<dl class="twitter-info">
		<dt>
			<a href="http://twitter.com/<?= $twitterInfo->screen_name ?>" style="background: url( '<?= $twitterInfo->profile_image_url ?>' ) no-repeat left center">
				<?= $twitterInfo->name ?>
			</a>
		</dt>
		<dd>
			<?= 'Twitter protocol is enabled' ?>, <a href="/disable"><?= 'disable' ?></a>.
		</dd>
	</dl>
<? else : ?>
	<dl class="twitter-info">
		<dt></dt>
		<dd>
			<?= 'Twitter protocol is disabled' ?>, <a href="<?= $authorizationUrl ?>"><?= 'enable' ?></a>.
		</dd>
	</dl>
<? endif ?>

в метод getAuthorizeUrl(NULL, array(‘oauth_callback’ => ‘http://mysite.my/’ . $dynamicUrl)) можно передавать параметром url, на который нужно редиректить пользователя.

Страничка, на которую редиректится пользователь c twitter.com:

	$twitterObj = Twitter::connect();
	$twitterObj->setToken( $GET['oauth_token'] );
	$token = $twitterObj->getAccessToken();
// сохранение в базу параметров токена пользователя
	set( 'oauth_token', $token->oauth_token );
	set( 'oauth_token_secret', $token->oauth_token_secret );
// тут редирект на карточку

Страничка для сброса твиттера:

// сброс параметров токена пользователя
	set( 'oauth_token', NULL );
	set( 'oauth_token_secret', NULL );
// тут редирект на карточку

Рассылка личных сообщений в Twitter:

public static function send( $To, $Text )
{
	$res = array('status' => false, 'message' => translate( 'Twitter is not configured' ));
	try
	{
		$twitter = Twitter::connect();

		$sendStatus = $twitter->post_direct_messagesNew( array(
			'user' => $To,
			'text' => shortenText( SdfHelper::htmlToPlain( $Text ), 140 )
		) );

	// обращение к свойству response отправляет запрос
		$response = $sendStatus->response;
		$res['message'] = isset( $response['created_at'] ) ? $response['created_at'] : '';
		$res['status'] = true;
	}
	catch ( EpiOAuthException $e ) {
		$res['message'] = Twitter::getExceptionError( $e );
	}
	catch ( EpiTwitterException $e ) {
		$res['message'] = Twitter::getExceptionError( $e );
	}
	return $res;
}

post_direct_messagesNew() преобразуется в POST-запрос к урлу direct_messages/new.

Кстати, вот толковая статья об использовнии Twitter на английском.

LEAVE A COMMENT