با توییتر آشنا هستید. در 140 کاراکتر، آنچه در اکنون دارد رخ می دهد را می نویسید که به اصطلاح می گوییم داریم توییت می کنیم…
API هم احتمالا می دانید چیست. به زبان ساده، چیزی است که بین نرم افزارها ارتباط ایجاد می کند (Application Programming Interface).
حالا بگذریم از این ها. گاهی اوقات ممکن است به هر دلیلی نتوانید از خود سایت توییتر، توییت بکنید. مواردی مثل فـ.یـ.لـ.تـ.ر شدن از مهم ترین آن هاست. یا حتی ممکن است کلاینت های مورد علاقه تان بعضی وقت ها کار نکنند و یا اصلن شاید دلتان می خواهد یک اپلیکیشن ِ شخصی و با سلیقه و نیاز ِ خودتان داشته باشید.

خب، API ِ توییتر که حی و حاضر هست، پی اچ پی هم مثل شیر دارد نگاه مان می کند و سایت ِ گلابی(!) هم یک افزونه پی اچ پی ِ کامل بر اساس API ِ توییتر، برای توییتر ارائه کرده است. می ماند مخلوط کردن ِ این ها با هم که الان قصد همین کار را داریم. چه می کند اوپن سورس :)
از طریق این اپلیکیشنی که می نویسیم، می توانیم با آن توییت کنیم، بدون اینکه مستقیما با سایت توییتر کاری داشته باشیم.
قبل از شروع
- یک. فرض ِ من بر این است که شما با پی اچ پی تا حدودی آشنا هستید.
- دو. مهم ترین پیش نیازتان، دراختیار داشتن یک سرور آپاچی هست.
- سه. نسخه ی پی اچ پی ِ نصب شده بر روی سرورتان باید افزونه ی cURL را پشتیبانی کند. برای چگونگی ِ فعال کردن cURL، اینجا بروید.
- چهار. افزونه ی Services Twitter را هم باید نصب کرده باشید (در ادامه، توضیحات لازم در رابطه با نصب Services Twitter را خواهم داد). این افزونه را از سایت گلابی دریافت کنید. در این مقاله، من از نسخه ی 0.2.1 (بتا) استفاده کرده ام.
- پنج. گفتن ندارد این که حتما باید یک حساب هم در توییتر داشته باشید :)
خب، اگر در رابطه با این 5 مورد مشکلی ندارید، می توانیم برویم سراغ مرحله ی بعدی.
نصب Services Twitter
پکیج ِ Services Twitter را که دریافت کردید، ابتدا پوشه ی Services را در مسیر اصلی اپلیکیشن کپی کنید.
فایل twitter.php را به twitter-class.php تغییرنام دهید و در مسیر اصلی اپلیکیشن کپی کنید.
وجود یا عدم ِ وجود ِ پوشه ی tests هم مهم نیست. در آن، نمونه های مختلف برای امکانات دیگر وجود دارد که می توانید از آن ها برای توسعه ی این اپلیکیشن استفاده کنید. یعنی چیزی بیشتر از فقط ارسال توییت!
به جز این ها، به پکیج Validate هم نیاز داریم. از اینجا دریافت کنید. پوشه ی docs و فایل validate.php را در مسیر اصلی اپلیکیشن قرار دهید. با مابقی ِ محتویات ِ پکیج ِ Validate هم کاری نداریم.
در آخر باید ساختار ِ فایل ها و پوشه ها چیزی شبیه به تصویر ِ کناری شود.
فراموش نشود: آدرس هایی که در فایل های twitter-class.php، common.php و sample_multiple.php فراخوانی شده اند، به بررسی و ویرایش نیاز دارند.
طراحی محیط اپلیکیشن
حالا باید در مسیر اصلی اپلیکیشن، یک فایل با نام index.php بسازید و با ادیتورتان بازش کنید و کدهای زیر را در آن قرار دهید:
<html>
<head>
<title>توییت توییت...</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" media="all" />
</head>
<body>
<div id="content">
<h1><a href="/index.php"><img src="logo.png" border="0" alt="توییت توییت..." title="" /></a></h1>
<?php
if (!isset($_POST['submit'])) {
?>
<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
<label>یوز:</label> <br/>
<input class="user" type="text" name="user" /><br/>
<label>پسورد:</label> <br/>
<input class="pass" type="password" name="pass" /><br/>
<label>چی کار می کنی؟</label> <br/>
<textarea class="message" name="status" cols="15"></textarea><br/>
<center><input class="submit" type="submit" name="submit" value="توییت" /></center>
</form>
<?php
} else {
// include class
include_once 'twitter-class.php';
try {
// read form input
$user = $_POST['user'];
$pass = $_POST['pass'];
$status = $_POST['status'];
// initialize service object
$service = new Services_Twitter($user, $pass);
// update status
$service->statuses->update($status);
// perform logout
$service->account->end_session();
echo 'توییت شد!';
} catch (Exception $e) {
die('اوپس: ' . $e->getMessage());
}
}
?>
<br />
<hr />
<p style="direction: ltr; text-align: left;">created by <a href="http://aliha.ir/" target="_blank">Aliha</a> | <a href="http://twitter.com/alihaa" target="_blank">follow me on twitter</a></p>
</div>
</body>
</html>
در همان مسیر اصلی، یک فایل style.css هم بسازید و دستورات سی اس اس زیر را در آن قرار دهید:
body {
background: #e8fbff url(bg.jpg) no-repeat left top;
color: #666;
}
a {
color: #0CC;
}
#content {
direction: rtl;
font: 12px Tahoma;
margin: 0 auto;
width: 294px;
}
h1 {
font: bold 23px Arial;
color: #0CF;
}
form input.user, form input.pass {
width: 190px;
background-color: #fafafa;
border: 1px solid #ebebeb;
margin: 3px 0 8px 0;
font: 12px Tahoma;
color: #666;
direction: ltr;
}
form input.user:focus, form input.pass:focus {
background-color: #fcffff;
border: 1px solid #41efff;
color: #666;
}
form textarea.message {
width: 250px;
height: 100px;
background-color: #fafafa;
border: 1px solid #ebebeb;
margin: 5px 0 8px 0;
font: 12px Tahoma;
color: #666;
}
form textarea.message:focus {
background-color: #fcffff;
border: 1px solid #41efff;
color: #666;
}
form input.submit {
background-color: #07d7f6;
font: 12px Tahoma;
width: 80px;
height: 25px;
color: #fff;
cursor: pointer;
border: none;
}
form input.submit:hover {
background-color: #43e6fe;
}
form input.submit:focus {
background-color: #ff6d25;
}
label {
color: #666;
}
حالا آدرس ِ اپلیکیشن را در مرورگر وارد می کنیم تا نتیجه را ببینیم.

نام کاربری توییتری و رمزعبور را وارد می کنیم و توییت ِ موردنظر را هم می نویسیم و روی توییت کلیک می کنیم:

توییت ارسال شده است! حالا می رویم ببینیم اپلیکیشن مان واقعا کار می کند و راست می گوید یا سرکار گذاشته است ما را :)

این طور که معلوم است، مثل اینکه کار می کند. خب کارمان دیگر تمام شده است.
می توانید این اپلیکیشن را آماده و بی نقص دریافت کنید، یعنی مراحل ِ بالا دیگر فِرت :)
نمونه ی آن را هم اینجا می توانید ببینید.











مصطفی قدم
در 09/08/20 گفت:سلام،
خیلی جالب بود. راجع به ASP.NET چطور؟
پاسخ
شاهین آزاد
در 09/08/20 گفت:مثل همیشه بی نقص علی جان …
دقیقا مثل لواشک ( لحاف دشک ) … پس ساختنش اینقدر آسان بود … ها
ممنون … ازت چیز یاد گرفتم …
چاکرم …
فعلا …
پاسخ
علیرضا
در 09/08/20 گفت:@مصطفی
راستش من ای اس پی اصلا کار نکردم و نمی تونم پاسخ درستی بدم…
پاسخ
SHahab
در 09/08/21 گفت:آقا دستت درد نکنه خیلی ممنون
پاسخ
داود مظفری
در 09/08/21 گفت:یه اسکریپت خیلی راحت تر هم بودش . اوپن سورس بود . تو سایت علیرضا ای جکس هست : ) اون چی ؟ بعد اگه خودمون بنویسیم چی ؟ بهتر نیست ؟
پاسخ
داود مظفری
در 09/08/21 گفت:مرسی بابت نوشته و توضیحش : )
پاسخ
علیرضا
در 09/08/21 گفت:@داود مظفری
اون با این فرق داره یکم. در مورد اینکه خودت بنویسی یا از همین کلاس های آماده استفاده کنی هم خب باید ببینی خودت می تونی نیازت رو برطرف کنی یا نه. به هرحال این یک کلاس کامل برای استفاده از امکانات مختلف توییتر هست که من فقط به ارسال توییتش توی این مقاله اشاره کردم…
پاسخ
unknown
در 09/08/21 گفت:باز هم مثل همیشه علی جان گل کاشتی ;)
ممنون ازت
پاسخ
Hooman
در 09/08/22 گفت:salam khoshhal misham bahatoon tabadole link dashte basham .bloge aali darid.ya ali .by
پاسخ
کامیار
در 09/08/23 گفت:@Hooman – بله خب :)) شرمنده بابت آفکامنت
پاسخ
امین ب
در 09/08/23 گفت:ممنون بابت آموزش :ی ، منم توییتر سایت رو با این اپلیکیشن راه انداختم ، تنکس
پاسخ
محمد
در 09/08/24 گفت:هووم ! به به مرسی علی یه لایک گنده واست
پاسخ
سینا
در 09/08/25 گفت:ای کاش مثلن یکی یه چیزی مثل صفحه اول تویتتر (البته به فارسی) طراحی می کرد و کدش رو در اختیار بقیه قرار میداد تا میشد توی هاست شخصی ازش استفاده کرد و اینا :) لطف میکنی اگه این کارو بکنی
پاسخ
علي رضا
در 09/08/26 گفت:خيلي جالب بود
پاسخ
سوما
در 09/08/29 گفت:مرسی :)
پاسخ
داود مظفری
در 09/08/31 گفت:@علیرضا – مقسی موسیو :دی
پاسخ
hichkas
در 09/09/06 گفت:سلام.
این که نوشتین چی هست؟؟؟؟؟؟؟؟توضیح بدین لطفا!!!
پاسخ
آقای مینیمال
در 09/09/06 گفت:ایا امکان داره این اپلیکیشن تو لوکال هاست کار کنه
من با ومپ هر کاری کردم نشد
پاسخ
Warrior
در 09/09/07 گفت:سلام چیزه خیلی جالبیه اما متاسفانه برای من کار نکرد
این ارور رو میده
اوپس: Unexpected HTTP status returned from API
پاسخ
علیرضا
در 09/09/07 گفت:@hichkas
فکر می کنم به اندازه ی کافی توضیح دادم :)
پاسخ
علیرضا
در 09/09/07 گفت:@آقای مینیمال
نه روی لوکال کار نمی کنه…
پاسخ
امین
در 09/09/08 گفت:ایول!!! یک توییتر شخصی برای هر نفر! ازین شعارای خز امروزی! ;)
پاسخ
سوت دسته دار
در 09/09/16 گفت:مرسی… ما هم نصب کردیم بر سایت خویش و البته یکم تغییرات…
پاسخ
داود مظفری
در 09/09/18 گفت:روی لوکال cURL کار می کنه کافیه cURL رو فعال کنید از php.ini بعد ، از فایروال ویندوز php.exe و مشتقات اون رو استثنا بگیرید . ولی توئیتر از لوکال هاست ساپورت نمی کنه :)
پاسخ
SHahab
در 09/09/20 گفت:میشه کاری کرد که لینک و متن from API را تغیر داد ؟
پاسخ
یه پسر جوون
در 09/10/04 گفت:خدا انشاالله اون آباء و اجدادت رو رحمت کنه
نور به قبرشون بباره . دستت درد نکنه . خسته شده بودم دیگه
پاسخ
ehsan
در 09/10/19 گفت:سلام خسته نباشید من خیلی دوست دارم php یاد بگیرم اگر ممکن است اموزش کامل را برایم بزارید در ضمن بابت این پستتون یک ذره بیشتر توضیح بدهید ممنون می شوم یعنی اول در بلگفا می شود همچین کاری کرد وبعد اگر می شود برای منی که php اصلا نمی دونم چه جوری میشه؟ با تشکر
پاسخ
SHahab
در 09/10/30 گفت:@SHahab – میشه کاری کرد که لینک و متن from API را تغیر داد ؟
پاسخ
babakslt
در 10/02/20 گفت:مرسی خیلی خوب بود. چیز یاد گرفتم. خیلی تحریک کننده است بعد از 4-5 سال در تلاش برای برگشتن هستیم به دنیای برنامه نویسی و اینا
:)
پاسخ
پندار
در 10/02/21 گفت:حالا هی بنویسید تا این عموفیلتر باف یه راهی پیدا کنه این ای پی آی رو هم ببنده :)
پاسخ
عليرضاچ
در 10/03/17 گفت:از وقتي وردپرسي بودي ميشناختمت، هميشه كارت عاليه عزيز
پاسخ
مرتضی
در 10/03/24 گفت:آقا جالب بود. موفق باشی.
پاسخ
پوریا
در 10/04/02 گفت:اولین بار وبلاگت و میبینم جدا فکر عجیب و جالبی داری
پاسخ
پوریا
در 10/04/02 گفت:خوب من باید چجوری بخونم وبلاگت و؟
پاسخ
علیها
در April 2nd, 2010@پوریا
از ساعت دوازده امشب به بعد، به حالت عادی برمیگرده.
پاسخ
رضا
در 10/04/03 گفت:خوب بود. فقط ایکاش منابع به درد بخوری رو هم معرفی میکردی که بشه بیشتر کار کرد. مثلا، منابعی که خودت کارت رو شروع کردی و از اونها استفاده می کنی.
پاسخ
مسیح
در 10/07/22 گفت:سلام،
خستهنباشید!
مرسی بابتِ آموزش ِ عالیتون!
من یه سئوال داشتم!
از اونجایی که API ِ نرمافزار ِ sharetronix کاملاً مشابه با Api ِ توئیتره!
آیا میشه از این آموزش در شیرترونیکس استفاده کرد؟
ممنون میشم اگه راهنماییم کنید!
پاسخ
احمد
در 10/08/22 گفت:با تشكر آموزش بسيار مفيدي بود
پاسخ
معین
در 10/08/26 گفت:سلام
بهت تبریک میگم کارت در نوبه خودش حرف نداره مخصوصا که این آموزش بهمراه چند تا آموزش دیگت رو خوندم و خوشم اومد
اگه تمایل داری با هم همکاری داشته باشیم با ایمیلم مکاتبه کن
خوش حال میشم با یک برنامه نویس حرفه ای همکاری کنم بدون داشتن حتی یک ریال چشم داشت!
پاسخ
معین
در 10/09/02 گفت:سلامی مجدد
دوست من به تازگی هنگام ارسال توییت با این پیغام مواجه میشم:
اوپس: Basic authentication is not supported
تو نمونه شما هم وجود دارد
علتش چی ممکنه باشه؟
قابل رفع است؟
لطفا اگه زحمتی نیست پاسخ منو بدید!
پاسخ