มาเขียนเว็บเพจติดต่อกับทวิตเตอร์ด้วย ASP.NET กันเถอะ (ตอนที่ 2)


สำหรับในตอนต่อของบทความ “มาเขียนเว็บเพจติดต่อกับทวิตเตอร์ด้วย ASP.NET กันเถอะ” นี้ ผมจะแสดงรายละเอียดในการใช้งานเจ้า Twitterizer .NET API Library มารับใช้กันครับ แต่ว่า…เนื่องจากมีรายละเอียดค่อนข้างแยะ ผมจึงขออนุญาตนำเสนอเพียงแค่บางคลาส และบางเมธอด ที่จำเป็นต้องใช้งานจริงๆในเบื้องต้นในการที่จะอ่านรายการทวีตของเรามา“ฝัง”ไว้ในหน้าเว็บของเราเท่านั้นนะครับ ส่วนรายละเอียดอื่นๆเพิ่มเติมสามารถเข้าไปอ่านได้ที่ เว็บไซต์ของโครงการ ได้ครับ

เตรียมสภาพแวดล้อมให้พร้อมใช้งาน
หลังจากที่เราแตกไฟล์ Twitterizer.Framework-1.0.1.149.zip(ไฟล์เวอร์ชั่น ณ ขณะเขียนบทความนี้) เราจะได้ไฟล์มาสองไฟล์คือ Twitterizer.Framework.dll และ Twitterizer.Framework.pdb จากนั้นเราก็เริ่มสร้างโครงงานทดสอบกันเลยครับ โดยเริ่มจากเปิดโปรแกรม Visual Studio 2008 แล้วสร้างโครงงานใหม่ ชนิด ASP.NET Web Application ภายใต้ .NET เฟรมเวอร์ค 3.5 สมมติตั้งชื่อโครงงานว่า “myTwitter” เมื่อ Visual Studio สร้างโครงงานใหม่ขึ้นมาแล้ว เราก็ต้องทำการกำหนด reference ไปยัง Twitterizer Library โดยคลิกบนเมนู “Project” เลือกหัวข้อ “Add Reference..” และไปที่ แถบ “Browse” เลือกไฟล์ Twitterizer.Framwork.dll จากโฟลเดอร์ที่เราแตกไฟล์มาเก็บไว้…

มาทำความเข้าใจกับ Twitterizer .NET API Library กันสักนิด
ใน Twitterizer Library มีคลาสให้เราเรียกใช้อยู่หลายคลาสทีเดียว แต่ผมจะขอกล่าวถึงคลาสเฉพาะเท่าที่จำเป็นจะต้องใช้ ซึ่งมีดังนี้ครับ

  • Twitter คลาสนี้ถือเป็นหัวใจของ API Library ชุดนี้ทีเดียว เนื่องจากผู้ออกแบบต้องการให้สามารถใช้งานได้ง่ายที่สุด และมี“ทางเข้า”เพียงทางเดียวเท่านั้นที่จะเข้าไปติดต่อกับทวิตเตอร์ได้ ดังนั้นในการที่เราจะนำ API Library ชุดนี้มาใช้ในการติดต่อกับทวิตเตอร์ เราก็จำเป็นจะต้องสร้าง instance object ของคลาสนี้ขึ้นมาเป็นอันดับแรก
  • TwitterUser คลาสผู้ใช้ทวิตเตอร์ ซึ่งประกอบด้วยข้อมูลต่างๆของผู้ใช้ เช่น UserName ซึ่งก็คือ Name ในทวิตเตอร์, ScreenName ซึ่งก็คือ Username ในทวิตเตอร์, Location, Uri ซึ่งก็คือ Web ในทวิตเตอร์, Description ซึ่งก็คือ Bio ในทวิตเตอร์ — ไม่รู้เหมือนกันว่ามานจะตั้งชื่อต่างจากที่คุ้นเคยกันในเว็บทวิตเตอร์ให้เข้าใจยากๆแบบนี้ทำม้ายยยย angry, NumberOfFollowers,  NumberOfFriends, NumberOfStatuses, ProfileImageUri และอีกมากมาย
  • TwitterUserCollection คลาสที่เก็บ collection ของ TwitterUser ใช้เมื่อต้องการแสดงรายชื่อของผู้ที่เราตามอ่านทวีตและผู้ที่ตามอ่านทวีตของเรา
  • TwitterStatus คลาสนี้ก็สำคัญครับ เพราะมันคือสิ่งที่เราและเพื่อนเราทวีต นั่นเอง
  • TwitterStatusCollection เป็น Collection ของ TwitterStatus
  • TwitterParameters เป็นคลาสที่ใช้เก็บพารามิเตอร์สำหรับกำหนดการทำงานและการอ่านข้อมูลต่างๆของเมธอดในคลาส Twitter เช่นกำหนดจำนวนรายการทวีตที่ต้องการอ่าน, กำหนดชื่อของผู้ใช้ที่ต้องการ เป็นต้น (รายละเอียดของพารามิเตอร์ต่างๆและการใช้งาน จะอยู่ที่ http://code.google.com/p/twitterizer/wiki/GettingStarted#Parameters ครับ)
  • TwitterizerException เป็น คลาส Exception ของ Twitterizer

การติดต่อกับทวิตเตอร์
เราจะเริ่มต้นติดต่อกับทวิตเตอร์ด้วยการสร้าง instance ของคลาส Twitter ขึ้นมาก่อน ดังนี้

using Twitterizer.Framework; // อย่าลืม import namespace เข้ามาด้วยนะครับ
Twitter twitter = new Twitter(“USERNAME”, “PASSWORD”); // UserName และ Password คือชื่อผู้ใช้และรหัสผ่านของทวิตเตอร์

การอ่านข้อมูลของผู้ใช้
การอ่านข้อมูลของผู้ใช้นั้นจะกระทำโดยเมธอด Show() ในคลาส TwitterUserMethods ซึ่งผู้พัฒนา library ชุดนี้ได้อำนวยความสะดวกให้เราโดยการกำหนดให้คลาส Twitter มี property ชื่อ User เป็นชนิด TwitterUserMethods ดังนั้นเราสามารถเรียกใช้เมธอด Show() ได้จาก instance ของคลาส Twitter ได้เลย เช่น twitter.User.Show(“USERNAME”)

ตัวอย่าง:

TwitterUser tu = twitter.User.Show(“USERNAME”); // กำหนด instance object ของ TwitterUser
string screenName = tu.ScreenName; // get twitter’s user name
string userName = tu.UserName; // get twitter’s name
string imageUri = tu.ProfileImageUri; // get twitter user’s image uri
int noOfFollowers = tu.NumberOfFollowers; // get number of followers
int noOfFollowing = tu.NumberOfFriends; // get number of following
int noOfTweets = tu.NumberOfStatuses; // get number of tweets

จากโค้ดตัวอย่างด้านบน เราสามารถเขียนโค้ดให้ย่นย่อ แต่อาจจะอ่านยากสักนิดสำหรับมือใหม่ ได้ดังนี้ครับ (ตัดบรรทัด TwitterUser tu = twitter.User.Show(“USERNAME”); ออกไปเลย)
string screenName = twitter.User.Show(“USERNAME”).ScreenName;
string userName = twitter.User.Show(“USERNAME”).UserName;
string imageUri = twitter.User.Show(“USERNAME”).ProfileImageUri;
int noOfFollowers = twitter.User.Show(“USERNAME”).NumberOfFollowers;
int noOfFollowing = twitter.User.Show(“USERNAME”).NumberOfFriends;
int noOfTweets = twitter.User.Show(“USERNAME”).NumberOfStatuses;

การอ่านรายการทวีต
เมธอดสำหรับอ่านรายการทวีตจากทวิตเตอร์ใน Twitterizer Library มีอยู่หลายเมธอด ซึ่งเมธอดเหล่านี้จะอยู่ในคลาส TwitterStatusMethods สำหรับในบทความนี้ผมจะขอแนะนำแต่เพียง 2 เมธอด คือ
1. HomeTimeline แสดงทุกๆทวีตที่เราและผู้ที่เราติดตามทวีต โพสต์ ซึ่งก็คือรายการทวีตที่หน้า home ข้องผู้ใช้นั่นเอง
2. UserTimeline แสดงทุกๆทวีตที่เราโพสต์ ซึ่งเทียบเท่ากับรายการทวีตที่หน้า profile ของเรานั่นเอง
ตัวอย่าง:
TwitterStatusMethods tsm = twitter.Status;
TwitterStatusCollection ht = tsm.HomeTimeline();
TwitterStatusCollection ut = tsm.UserTimeline();

แต่เนื่องจาก property Status ในคลาส Twitter ในถูกกำหนดให้เป็นไทป์ TwitterStatusMethods อยู่แล้ว ดังนั้นเราสามารถเขียนโค้ดให้กระชับขึ้นได้ดังนี้ครับ

TwitterStatusCollection ht = tsm.HomeTimeline();
TwitterStatusCollection ut = tsm.UserTimeline();

กรณีที่มีการผูกข้อมูลกับคอนโทรลเช่น DataList เราก็สามารถโยน TwitterStatusCollection ไปใส่ DataList ได้โดยตรงเลย เช่น
dlistHomeTimeline.DataSource = twitter.Status.HomeTimeline();
dlistHomeTimeline.DataBind();

นอกเหนือจาก 2 เมธอดข้างบนนี้แล้วยังมี FavoritesTimeline, Mentions() และ Replies() ซึ่งคืนค่ากลับมาเป็น TwitterStatusCollection เหมือนกัน แต่ผมก็ยังไม่ได้ทดลองใช้งาน เลยยังไม่อาจแนะนำได้ อันที่จริงในบทความนี้และตัวอย่างโปรแกรมของบทความนี้เพียงต้องการแสดงวิธีการอ่านรายการทวีตขึ้นมาแสดงในหน้าเว็บเพจเท่านั้น ไม่ได้ตั้งใจว่าจะสร้างเว็บไซต์เลียนแบบทวิตเตอร์มาแข่งกะเขาหรอกนะครับ

นอกจากคลาส TwitterStatusMethods ที่มีเมธอดสำหรับเรียกดูรายการทวีตแล้ว ยังมีคลาสที่ใช้การจัดการกับ Direct Message เพียงอย่างเดียวอีก 1 คลาส คือ TwitterDirectMessageMethods ซึ่งในคลาสนี้มีเมธอด DirectMessages() ที่คืนค่ากลับเป็นชนิด TwitterStatusCollection เช่นเดียวกัน ผมเข้าใจว่าเป็นการอ่านเฉพาะข้อความที่เพื่อนๆส่งถึงเราโดยตรงซึ่งเทียบเท่ากับหน้า DirectMessages ในทวิตเตอร์ (ยังไม่ได้ทดลองใช้งานอีกเช่นกันครับ เขินอาย)

การอ่านข้อมูลของผู้ที่เราติดตามทวีต และผู้ที่ติดตามทวีตของเรา (Following และ Followers)
เราสามารถอ่านข้อมูลของผู้ที่เราติดตามทวีต โดยเรียกใช้เมธอด Friends ในคลาส TwitterUserMethods ซึ่งจะคืนค่าเป็น TwitterUserCollection และในทำนองเดียวกัน เราก็สามารถอ่านข้อมูลของผู้ที่ติดตามทวีตของเรา โดยเรียกใช้เมธอด Followers ในคลาส TwitterUserMethods ซึ่งจะคืนค่าเป็น TwitterUserCollection เช่นกัน
ตัวอย่าง:
// To get all of Followers
TwitterUserMethods tum = twitter.User;
TwitterUserCollection followers = tum.Followers();
foreach (TwitterUser user in followers) {
…    // do something for each twitter user such as display ScreenName, UserName and etc.
}
// To get all of Following
TwitterUserMethods tum = twitter.User;
TwitterUserCollection following = tum.Friends();
foreach (TwitterUser user in following) {
…    // do something for each twitter user such as display ScreenName, UserName and etc.
}

แต่เนื่องจาก property User ในคลาส Twitter ได้ถูกกำหนดให้เป็นไทป์ TwitterUserMethods อยู่แล้ว ดังนั้นเราสามารถเขียนโค้ดให้กระชับขึ้นได้ดังนี้ครับ
// To get all of Followers
foreach (TwitterUser user in twitter.User.Followers()) {
…    // do something for each twitter user such as display ScreenName, UserName and etc.
}
// To get all of Following
foreach (TwitterUser user in twitter.User.Friends()) {
…    // do something for each twitter user such as display ScreenName, UserName and etc.
}

เช่นเดียวกันกับการอ่านรายการทวีต สำหรับกรณีที่มีการผูกข้อมูลกับคอนโทรลเช่น DataList เราก็จะสามารถโยน TwitterUserCollection ไปใส่ DataList ได้โดยตรงเลย เช่น
dlistFollowing.DataSource = twitter.User.Friends();
dlistFollowing.DataBind();

การส่งข้อความทวีต
เราสามารถส่งข้อความทวีตได้ด้วยการใช้เมธอด Update() ซึ่งเป็นเมธอดของคลาส TwitterStatusMethods
ตัวอย่าง:
TwitterStatusMethods tsm = twitter.Status;
tsm.Update(“Your tweet message”);

และเช่นเดียวกันกับการอ่านรายการทวีต property Status ในคลาส Twitter ในถูกกำหนดให้เป็นไทป์ TwitterStatusMethods อยู่แล้ว ดังนั้นเราสามารถเขียนโค้ดให้สั้นลงดังนี้
twitter.Status.Update(“Your tweet message”);


เอาล่ะครับ เมื่อมาถึงบรรทัดนี้ก็หมายความว่า เราสามารถนำเจ้า Twitterizer API Library มาใช้ในการเขียนเว็บเพจเพื่อติดต่อกับทวิตเตอร์ได้ระดับหนึ่งแล้ว คือติดต่อกับทวิตเตอร์ได้, อ่านข้อมูลของผู้ใช้ได้, อ่านข้อมูลรายละเอียดของ Followers และ Following ของผู้ใช้ได้, อ่านรายการทวีตได้ ซึ่งเราสามารถนำไป “ฝัง” ลงในหน้าเว็บของเราได้ และเราสามารถนำไปประยุกต์ต่อได้โดยการทำงานร่วมกับ ASP.NET Ajax โดยใช้คอนโทรล Timer และ UpdatePanel มาช่วย “Refresh” ข้อความทวีต, จำนวน Following ฯลฯ ซึ่งในโค้ดตัวอย่างก็จะแสดงการใช้ ASP.NET Ajax ร่วมกับ Twitterizer API นี้ด้วย 

แหล่งข้อมูลอ้างอิง

แหล่งข้อมูลดาวน์โหลด
Zip
ASPNETTwitterizerAPI.zip — A sample program to integrate Twitter into an ASP.NET website (website “MyTwitter”).

หมายเหตุ ในโปรแกรมตัวอย่างผมได้เก็บค่าของ TwitterUserName และ TwitterPassword ไว้ที่ เซคชั่น appSettings ในไฟล์ web.config ถ้าหากคุณดาวน์โหลดโปรแกรมตัวอย่างไปทดลอง จะต้องไปแก้ไข TwitterUserName และ TwitterPassword ที่ web.config เสียก่อนนะครับ และในขณะรันทดสอบจะต้องเชื่อมต่อกับเครือข่ายอินเทอร์เน็ตด้วยนะครับ เพราะ API Library นี้จะต้องเชื่อมต่อกับเซอร์ฟเวอร์ของทวิตเตอร์ด้วย
CREDIT : Scott Mitchell, “Integrating Twitter Into An ASP.NET Website”, http://www.4guysfromrolla.com/articles/021710-1.aspx

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s