PHP рдореЗрдВ Twitter API рдХреЗ рд▓рд┐рдП рдПрдХ oAuth рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рдЖрдзрд╛рд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ PHP рдореЗрдВ OAuth рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд╡рд┐рдЯрд░ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
OAuth рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдирдП рдЖрд╡реЗрджрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд┐рдпрдореЛрдВ рдХреЛ 31 рдЕрдЧрд╕реНрдд рд╕реЗ рдЯреНрд╡рд┐рдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "OAuth" рддрдХрдиреАрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЬреЛ рдЕрдВрдд рдореЗрдВ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрджреЗрд╢ рдлрд╝реАрдб, рдЕрдкрдиреЗ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреА рдирд╡реАрдирддрдо рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдлрд╝реАрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдпрд╛рдпреА рдпрд╛ рдорд┐рддреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдЖрдк рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рдВрдкреВрд░реНрдг рдлрд╝реАрдб рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ config.php рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

define('CONSUMER_KEY', 'Your consumer key');
define('CONSUMER_SECRET', 'You consumer secret');
define('OAUTH_CALLBACK', 'http://yousite.ru/callback.php');


рдХрдиреЗрдХреНрдЯ рдкреГрд╖реНрда рдкрд░, Connect.php рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЙрдкрд░реЛрдХреНрдд рдбреЗрдЯрд╛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:

if (CONSUMER_KEY === '' || CONSUMER_SECRET === '') {
echo 'You need a consumer key and secret to test the sample code. Get one from https://twitter.com/apps'; exit;}


рд╣рдо рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (redirect.php рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ):

$content = 'Sign in with Twitter';
<?php print_r($content); ?>


рд╣рдо рдЯреНрд╡рд┐рдЯрд░ рдПрдкреАрдЖрдИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдХрд╛рдЙрдВрдЯ рдбреЗрдЯрд╛ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ

require_once('twitteroauth/twitteroauth.php');
require_once('config.php');


рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдЦрд╛рддреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ TwitterOuth рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдЪрд╛рддреЗ рд╣реИрдВ:

$_SESSION['oauth_token'] = $token = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];


рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЯреЛрдХрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рднреЗрдЬрддреЗ рд╣реИрдВ:

$url = $connection->getAuthorizeURL($token);

рдпрджрд┐ рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрди рдкреБрд░рд╛рдирд╛ рд╣реИ, рддреЛ рд╣рдо рд╕рддреНрд░ рдХреЛ рдЦрд╛рд▓реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдЬ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ:

if (isset($_REQUEST['oauth_token']) && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) {
$_SESSION['oauth_status'] = 'oldtoken';
header('Location: ./clearsessions.php');


Clearsession.php рдкреЗрдЬ рдкрд░, рдХреЙрд▓ рдХрд░реЗрдВ:

session_start();
session_destroy();
header('Location: ./connect.php');


рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдЦрд╛рддреЗ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдЯреЛрдХрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ TwitterOuth рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);


рдЕрдм рд╣рдореЗрдВ рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);
$_SESSION['access_token'] = $access_token;


рдЕрд╕реНрдерд╛рдпреА рдЯреЛрдХрди рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);


рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдХреЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ:

header('Location: ./index.php');

Index.php рдкреЗрдЬ рдкрд░, рд╣рдо рдПрдХ рдЯреЛрдХрди рдореЗрдВ рдпреВрдЬрд░ рдЯреЛрдХрди рдХреЛ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВ:

$access_token = $_SESSION['access_token'];

рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдЦрд╛рддреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЛрдХрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ TwitterOuth рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ:

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

рдЕрдм рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

$content_user = $connection->get('account/verify_credentials');
$array_user = (array)$content_user;
$user_id=$array_user["id"];


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрдИрдбреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░рдгреА рдореЗрдВ рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдлрд╝реАрдб рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░рдгреА рдореЗрдВ рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):

$content_friends=$connection->get('statuses/friends_timeline',array('id' => $user_id));

рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреЗ рд╣рд╛рд▓ рдХреЗ рдкреЛрд╕реНрдЯ:

$content_followers=$connection->get('statuses/followers', array('id' => $user_id));

рд╕реНрд╡рдпрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рдлрд╝реАрдб (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ 20 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ 200 рд╣реИ)ред

$content_userline=$connection->get('statuses/user_timeline', array('id' => $user_id,'count'=>200));

рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рдЯреНрд╡рд┐рдЯрд░ рдлрд╝реАрдб: api.twitter.com/1/statuses/public_timeline.xml
рдЖрдкрдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрджреЗрд╢: api.twitter.com/1/statuses/mentions.xml?count=5/page=1
рдореЗрд░рд╛ рд░реАрдЯреНрд╡реАрдЯ: api.twitter.com/1/statuses/retweeted_by_me.xml?count=5/page=3
рдореБрдЭреЗ рдХрд┐рдП рдЧрдП рдЯреНрд╡реАрдЯ : api.twitter.com/1/statuses/retweeted_to_me.xml?count=5&page=3
рдФрд░ рдЕрдиреНрдп рддрд░реАрдХреЗред

echo print_r($content_friends); //

рд╕рдВрджреЗрд╢ рдлрд╝реАрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдкрд░рд┐рдгрд╛рдо stdClass рдСрдмреНрдЬреЗрдХреНрдЯ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрдЧреА:
[реж] => stdClass рдСрдмреНрдЬреЗрдХреНрдЯ
(
[create_at] => Sat Sep 04 11:01:48 +0000 2010
[in_reply_to_screen_name] =>
[рд╕реНрд░реЛрдд] => IncredebleTB
[рд░реАрдЯреНрд╡реАрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛] =>
[рдЫрдВрдЯрдиреА] =>
[in_reply_to_status_id] =>
[in_reply_to_user_id] =>
[рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛] =>
[рдЬрдЧрд╣] =>
[рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ] =>
[рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛] => stdClass рдСрдмреНрдЬреЗрдХреНрдЯ
(
[show_all_inline_media] =>
[ profile_background_image_url ] => s.twimg.com/a/1283555538/images/themes/theme16/bg.gif
[рдкрд╕рдВрджреАрджрд╛_рдХрд╛рдЙрдВрдЯ] => реж
[ profile_image_url ] => a0.twimg.com/profile_images/1105647496/robot_normal.jpg
[рд╡рд┐рд╡рд░рдг] => рд╡реЗрдм рдбрд┐рдЬрд╛рдЗрди, рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕, рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╛рд╕
[рдпреЛрдЧрджрд╛рди_ рд╕рдХреНрд╖рдо] =>
[profile_sidebar_fill_color] => f2f2f2
[url] => dandreev.com
[geo_enabled] =>
[profile_background_tile] =>
[screen_name] => рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрдЯреАрдмреА
[рд▓реИрдВрдЧ] => рдПрди
[create_at] => рд╕реЛрдо рдЕрдкреНрд░реИрд▓ 26 20:32:14 +0000 2010
[profile_sidebar_border_color] => a8a8a8
[рд╕реНрдерд╛рди] => рдорд╛рд╕реНрдХреЛ
[рд╕рддреНрдпрд╛рдкрд┐рдд] =>
[follow_request_sent] =>
[рдирд┐рдореНрди] => рез
[profile_background_color] => 9AE4E8
[followers_count] => 99
[рд╕рдВрд░рдХреНрд╖рд┐рдд] =>
[profile_text_color] => 141414
[рдирд╛рдо] => рджрд┐рдорд┐рддреНрд░реА рдПрдВрдбреНрд░реАрд╡
[рд╕реВрдЪреАрдмрджреНрдз_рдХрд╛рдЙрдВрдЯ] => 0
[profile_use_background_image] => рез
[time_zone] => рдХреНрд╡рд┐рдЯреЛ
[friends_count] => 48
[рдЖрдИрдбреА] => резрей idрекрел реп реирек
[рд╕реНрдЯреЗрдЯрд╕_рдХрд╛рдЙрдВрдЯ] => 900
[рд╕реВрдЪрдирд╛рдПрдВ] =>
[utc_offset] => -18000
[profile_link_color] => 0084B4
)

[рднреВ] =>
[retweet_count] =>
[рдЖрдИрдбреА] => реиреи реп ремрем8833рей ]рем
[рдЗрд╖реНрдЯ] =>
[рдкрд╛рда] => рдХреНрд░реЗрдЧрд▓рд┐рд╕реНрдЯ рд╕реЗрдВрд╕рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛: рд╡рдпрд╕реНрдХ рдЕрдиреБрднрд╛рдЧ рдереЛрдбрд╝рд╛ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ редly/9evRKN (@techTrunch) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
)

рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

$array_friends = (array)$content_friends;
foreach ($array_friends as $friends_sets)
{
$friends_sets=(array)$friends_sets; // stdClass Object
$friend_name=$friends_sets["user"]->name; // stdClass Object
}


Php рдореЗрдВ oAuth рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред
рдЖрд╡реЗрджрди рдЬреЛ рдЕрдВрдд рдореЗрдВ рдирд┐рдХрд▓рд╛, рд╡рд╣ рдпрд╣рд╛рдВ рд╣реИ ред рдЖрд╡реЗрджрди рдореЗрдВ 3 рдкреГрд╖реНрдард╛рдВрдХрди рдЯреЗрдк (рдЕрдиреБрдпрд╛рдпреА, рдорд┐рддреНрд░ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЯреЗрдк) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, jTweetsAnywhere рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рд╢реАрд░реНрд╖ рдкрд░ рдЯреНрд╡рд┐рдЯрд░ рдмрдЯрди рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрдЯ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In103548/


All Articles