Skip to: Site menu | Main content


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

TwitterAPI+C#

BASIC認証のライブラリが使えなくなったので、OAuth認証のライブラリをボチボチと製作。
C#やVB.NETから使えるようにする。
C#2010EEで開発。ただし、.NET3.5にする。(そのうち、DynamicJsonが使ってみたいので.NET4.0にするかも。)
APIの呼出はJSON形式にする。
とりあえず、ProfileのImageUploadとGeoAPI以外は完成。

参考サイト

Twitter API Documentation(公式:英語)
Twitter API 仕様書 (勝手に日本語訳シリーズ)英語で理解できないとこは参考にさせてもらってます。
貧脚レーサーのサボり日記(C#|TwitterのAPIを叩くライブラリを作ってみた)Basic認証で参考にさせてもらったサイト
nojimaの日記(C#でOAuthでTwitter)OAuth認証はこちらを参照。

仕様

C#ソースから、Doxygenでドキュメント化。
Doxygenで作成したドキュメント
開発環境は、C#2010EE。ただし、.NET3.5を使用。

使い方

Twitterのサイトhttp://twitter.com/apps/newでアプリ情報を登録して、Consumer keyとConsumer secretもらっておいてください。
OAuthTwitetr.dllをC#やVBのプロジェクトに「参照を追加」して使用してください。

HomeTimeline

VB (VB2010EE)
' Timelineの表示
Dim tl As New TimelineAPI
Dim statuses As List(Of Status) = tl.HomeTimeline(oauth)
For Each status As Status In statuses
	Console.WriteLine(status.User.Name)
	Console.WriteLine(status.Text)
	Console.WriteLine("")
Next
 
C# (C#2010EE)
// Timelineの表示
TimelineAPI tl = new TimelineAPI();
List<Status> statuses = tl.HomeTimeline(oauth);
foreach (Status status in statuses)
{
	Console.WriteLine(status.User.Name);
	Console.WriteLine(status.Text);
	Console.WriteLine("");
}
 

非同期HomeTimeline

VB (VB2010EE)
' 非同期でTimeline()
' イベント登録
AddHandler Utility.DownloadCompleted, AddressOf Download_Completed
Dim tl As New TimelineAPI
tl.HomeTimelineAsync(oauth)
 
' 非同期キャンセル
'Utility.CancelAsync()
 
'イベント
Private Sub Download_Completed(ByVal sender As Object, ByVal e As TwitterEventArgs)
	If e.Cancelled Then
		Console.WriteLine("キャンセルされました。")
	ElseIf Not (e.Error Is Nothing) Then
		Console.WriteLine("エラー:{0}", e.Error.Message)
	Else
		Console.WriteLine("非同期")
        For Each result As Object In e.ResultObject
            If TypeOf result Is Status Then
                Console.WriteLine(result.User.Name)
                Console.WriteLine(result.Text)
                Console.WriteLine("")
            End If
        Next
    End If
End Sub
 
C# (C#2010EE)
// 非同期でTimeline()
// イベント登録
Utility.DownloadCompleted += new Utility.TwitterEventHandler(Utility_DownloadCompleted);
TimelineAPI tl = new TimelineAPI();
tl.HomeTimelineAsync(oauth);
 
// 非同期キャンセル
//Utility.CancelAsync();
 
//イベント
static void Utility_DownloadCompleted(object sender, TwitterEventArgs e)
{
	if (e.Cancelled)
	{
		Console.WriteLine("キャンセルされました。");
	}
	else if (e.Error != null)
	{
		Console.WriteLine("エラー:{0}", e.Error.Message);
	}
	else
	{
        Console.WriteLine("非同期");
        if (e.ResultObject.GetType() == typeof(List<object>))
        {
            foreach (var result in (List<object>)e.ResultObject)
            {
                if (result.GetType() == typeof(Status))
                {
                    Console.WriteLine(((Status)result).User.Name);
                    Console.WriteLine((result as Status).Text);
                    Console.WriteLine("");
                }
            }
        }
    }
}
 

Update

VB (VB2010EE)
' Tweet
Dim tw As New TweetsAPI
Dim update As Status = tw.Update(oauth, "つぶやき")
Console.WriteLine("Tweet:" + update.Text)
 
C# (C#2010EE)
// Tweet
TweetsAPI tw = new TweetsAPI();
Status update = tw.Update(oauth, "つぶやき");
Console.WriteLine("Tweet:" + update.Text);
 

ダウンロード

Version 0.9.5 OAuthTwitterAPI_0_9_5.zip
古いVersionを使っている人がいたら、、、
結構メソッド名を変えてるので、使えるうちは古いほうがいいかもです。


更新履歴

Version 0.9.0 (2010/10/08)
  • 追加 OAuth
  • 追加 TimelineAPI
  • 追加 TweetsAPI
Version 0.9.1 (2010/10/13)
  • 追加 UsersAPI
  • 追加 TrendAPI
  • 追加 SearchAPI
Version 0.9.2 (2010/10/23)
  • 追加 ListsAPI
  • 追加 DirectMessagesAPI
  • 追加 FriendshipsAPI
  • 追加 FriendFollowerAPI
Version 0.9.3 (2010/10/25)
  • 追加 AccountAPI(ImageUpload関係を除く)
  • 追加 FavoritesAPI
  • 追加 NotificationsAPI
  • 追加 BlockAPI
  • 追加 SpamAPI
  • 追加 SavedSearchAPI
  • 追加 LegalAPI
  • 追加 HelpAPI
  • 変更 非同期の戻り値をObjectに変更
Version 0.9.4 (2010/11/29)
  • 修正 Mentions(アドレスの間違い)
Version 0.9.5 (2011/06/04)
  • 追加 GeoAPI
  • 修正 TwitterのDocumentにあわせてメソッド名を変更。

まとめ

すべてJSONで処理することにより、全面的にデータ部分の書き換え。
API側でアドレスに変数を入れるものを撤廃する方向のよう。(まだ一部残ってますが)
Geo関係は、とにかくデータがまとまってない。
APIのVersionが2になってまとめてもらえるとありがたいな。


自分で使用するメソッド以外は、さらっと1度テストする程度なので、絶対バグが潜んでいるはず。

  • 不具合、要望、ご意見、ご感想等はWiki(TOP)からもしくはBLOGのコメントなどへお願い致します。


作成日時: 2009/07/07
更新日時: 2011/07/01