Использование 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
Для отправки комментария вам необходимо авторизоваться.