Использование Twitter-API в PHP
Есть такая библиотека — twitter-async (лицензия — свободное распространение и использование).
Из неё нужно включить в проект файлы
- EpiCurl
- EpiOAuth
- EpiSequence
- EpiTwitter
Далее на twitter.com нужно завести приложение.
После успешной регистрации Twitter выдаст полезные данные для oAuth-авторизации, нужны из них два: Consumer key и Consumer secret — это авторизационные данные приложения, их нужно сохранить где-нибудь, к примеру, в базе.
Для работы с твиттером создаём обёртку:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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; } } |
После этого нужно создать страничку, чтобы пользователь смог разрешить использовать свой аккаунт на твиттере созданному нами приложению.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<? $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:
1 2 3 4 5 6 7 |
$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 ); // тут редирект на карточку |
Страничка для сброса твиттера:
1 2 3 4 |
// сброс параметров токена пользователя set( 'oauth_token', NULL ); set( 'oauth_token_secret', NULL ); // тут редирект на карточку |
Рассылка личных сообщений в Twitter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 на английском.
Similar Posts
- None Found
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.