ラベル Twitter の投稿を表示しています。 すべての投稿を表示
ラベル Twitter の投稿を表示しています。 すべての投稿を表示

2011-10-07

[C#] Twitterizerでユーザプロファイルデータを取ってくる

Twitterrizerでユーザのプロファイル情報を取ってくる方法です。特に何か難しいことはなく、TwitterUserクラスを利用して、任意のユーザの名前を指定して情報を得ることができます。
 TwitterResponse showUserResponse = TwitterUser.Show("oyouji");
 TwitterUser user = showUserResponse.ResponseObject;
 userPicBox.ImageLocation = user.ProfileImageLocation;
 lbUserName.Text = user.ScreenName;
これを実行すると下記のようになります。

あっけないですね。

2011-07-22

GAEでTwitter4Jを利用する 

JavaでTwitterクライアントを作るにはTwitter4Jを使えば簡単らしいが、GAE上で実装する場合はちょっとした工夫がいるようだ。

appengine-web.xmlの設定
設定のポイントは2つ。
  • sessionを使えるようにする
  • consumerKeyとconsumerSecretは、System-propertyとして記述
以上を実現するには以下のように記述するとよい。

サーブレットでの記述方法
下記に2つ載せますが、1つ目が最初に呼ばれるサーブレットで、2つ目はコールバックされるサーブレットです。1つ目では、
  • twitterクラスのインスタンス
  • requestToken情報
をセッションで保存しておくというのがポイントです。これは、memcacheに入れてもいいのかな?とにかく、状態を残しておかないといけません。
コールバックされるサーブレットでは、リクエストパラメータから「oauth_verifier」を受け取っておいてください(自動的に付与されます)。それを用いてAccessTokenを入手することになります。
参考URL
本サイトの内容は、下記のサイトを参考にさせていただきました。ありがとうございます。


2011-07-02

Twitterizerはじめの一歩

ちょっと触った印象だが、かなり使いやすい気がする。ただ、
  • 一部実装できてないようなクラスがあったりする
  • 日本語のサイトが少ない(日本では無名?海外でも?)
というところが欠点かな。
参照設定
dllを利用する場合は、
  • Twitterizer2.dll
  • Newtonsoft.Json.dll
の2つを参照設定に追加する。あとは、クラスをstaticに呼び出すだけ。
Tokenの入手方法
OAuthUtilityクラスを用いる。
requestToken = OAuthUtility.GetRequestToken(tokens.ConsumerKey, tokens.ConsumerSecret, "oob");//第2引数はよくわからないのでとりあえずoobとした
 Uri authorizationUri = OAuthUtility.BuildAuthorizationUri(requestToken.Token);
 //ブラウザ起動
Process.Start(authorizationUri.ToString());
//入手したPINCODEを利用してTokenを取ってくる
OAuthTokenResponse accessToken = OAuthUtility.GetAccessToken(tokens.ConsumerKey,tokens.ConsumerSecret, requestToken.Token, txtPincode.Text);

ホームタイムラインを取ってくる
TwitterTimelineクラスを用いる。
TwitterResponse<twitterstatuscollection> statuss= TwitterTimeline.HomeTimeline(tokenss);
 foreach (TwitterStatus tweet in statuss.ResponseObject) {
     Debug.Write(tweet.Text);
 }
            
ユーザタイムラインを取ってくる
TwitterUserクラスを用いる。
TwitterResponse<twitteruser> showUserResponse = TwitterUser.Show(tokenss, "oyouji");
           if (showUserResponse.Result == RequestResult.Success) {
               label2.Text = showUserResponse.ResponseObject.Name + " (" + showUserResponse.ResponseObject.ScreenName + ")";
              Debug.Write(showUserResponse.ResponseObject.Status.Text);
           }
上記コード内の細かいところは、適当に無視&マニュアルを参照のこと。

OAuthTokensクラスの扱いがやっかい?
Twitterizerのクラスでは、OAuthに関係するTokenの情報は、OAuthTokensクラスを利用することになっている(上記でいうtokenss変数がそれに相当)。こいつに各種情報を入れておいて渡すだけで、様々なメソッドを実行することが出来る感じ。ただ、これはTwitterizer専用みたいになっていて、一部のフィールドが参照不可になっていたりする。もし、個別にTokenを管理しようと思ってもこのクラスを流用できないので注意。まあ、そんな使い方するのがダメなんでしょうけど。。。。

2011-07-01

[C#]TwitterクライアントライブラリはTwitterizerがイイみたい

C#でTwitterクライアントを実装しているのだが、
Twitterizer
というのがいいらしい。下記のようにクラスが用意されている
  • OAuthUtility ・・・認証系
  • TwitterUser ・・・ ユーザ情報系
  • TwitterStatus ・・・ ステータス処理系
  • TwitterDirectMessage ・・・ダイレクトメッセージ処理系
  • TwitterList  ・・・ リスト機能系
  • TwitterSearch ・・・ 検索処理系
  • TwitterFriendship ・・・各種フォロワーの情報系
  • TwitterFavorite ・・・ Favorite機能系
  • TwitterTimeline  ・・・ タイムライン取得系

ちょっと使い方にクセがあったりもするが、だいたい見切った。今、院生に作らせているアプリはこれに変更する予定。XML周りの処理をしなくても良いというのは便利なところ。。
まあ、研究上では以下のところ特に高機能なものは必要ないのだが、将来的な拡張を考えればこの手のライブラリに手を出しておいて悪くはないだろう。ちょっと心配なのは、こちらがやりたい細かな検索に対応しているのかどうか、、、いろいろ試行錯誤しながら、こまかなプログラムについてはこのBLOGでも取り上げておこうと思う。



2011-06-11

サーベィ:twitterを活用した授業デザインと実践

村上正行:twitterを活用した授業デザインと実践,教育システム情報学会第35回全国大会、p127-128,2010
従来のクリッカーなどと比較し、大学授業にTwitterを利用する利点として、以下のように記述が書いてありましたので、、、
・学生のコミュニティ形成についてである。.......  授業に関するツイートを一覧することができるし、必要に応じてリストを用いれば他の受講者のツイートも閲覧することができる。
・SNSと近いといえるが、SNSはリアルタイム性がないことから、授業中に自分の意見を書かせるといった活用には向いてない
・コミュニティとして授業に関する情報を共有した上で、自分の意見や感想を書くことによって動機付けや理解が深まることも期待できる。
たしかに一般的なクリッカーは、どちらかというと「先生のため」という位置づけが強いというきがしますね。もちろん、クリッカーで得た回答を学生にも見せて、そこから講義の議論にはいるという方法はあると思いますけど。。。。

個人的には、Twitterの敷居の低さというのもちょっとあるとおもうんですけど。そこが今いち説明しきれないんですよね。なぜ皆、Twitterにハマるのか???個人的にはこの流れに乗っちゃいたいと思うですけどね。

2011-03-24

TwitterのOAuth認証とXAuth認証の違いを図で書いてみた

Twitter系の研究を来年度も継続することになったので、OAuth認証とXAuth認証の違いを今一度図で説明します。以前にも「Twitterアプリを開発でOAuthを利用する際のはじめのはじめの一歩」で書きましたが、だいたい以下のような感じになると思います。まず、いずれの方法でも共通するのは、
  • 最終的にはAccessTokenとTokenSecretを利用する
ということです。つまりこれらをどうやって入手するのかというのが違いになります。

OAuth認証(PINCODE-BASE)


OAuthでは、アプリにはID、Passwordは入力しません。それらはTwitterのサイトに入力します。アプリに入力するのはPINCODEであり、これはAccessTokenとTokenSecretを入手するために利用します。
なお、ブラウザベースのアプリであれば、OAuthでもPINCODEを利用しなくてもリダイレクトで対応できるらしいです(未確認)。この方法はわかり次第書きます。

XAuth認証


IDとPasswordは最初にアプリに入力し、アプリがTwitterサイトに認証確認をします。これによりAccessTokenとTokenSecretを入手します。この方法は、BASIC認証に近いような気もしますが、冒頭に書いたように、TwitterへのアクセスはAccessTokenとTokenSecretを用います。Basic認証では、常時IDとPasswordを用いますから、それに比べるとセキュリティの面で安心感があります。ただ、一時的にでもアプリにパスワードを渡すという点で心配なところもあります。
なお、XAuth認証はTwitterへの申請と許可が必要であり、デスクトップアプリで、かつ正当な理由でないと認められないらしいです。


2010-11-13

Twitterアプリを開発でOAuthを利用する際のはじめのはじめの一歩

卒研で、OAuth認証を利用したTwitterアプリを作らせているのですが、ちょっとつまづいたのでそのメモ書き。

まず、TwitterAPIを利用するには、IDとパスワードが必要なわけで、2010年8月まではBASIC認証ができましたが、それ以降はできなくなりました。その代替としてOAuth/xAuthを利用する事になります。この手順としては基本は以下のとおりです。

事前準備
  1. OAuthを使うアプリケーションをTwitterサイトで事前登録する 
  2. 設定画面よりConsumer keyとConsumer secret(アプリのIDとパスワードみたいなもの)を入手
(開発する)アプリでの手順
  1. ユーザにアプリが自身のIDを利用してTwitterにアクセスできるように許可をさせる。具体的にはConsumer keyとConsumer secretを利用して、アプリで認証のためのURLを入手し、そのサイトへユーザをアクセスさせる。
  2. サイト上でユーザが許可するとPINCODE(暗証番号)が表示される
  3. Consumer key、Consumer secret、PINCODEを利用して、AccessTokenとAccessTokenSecretを入手する(これが、ユーザのID、パスワード替りになります)。
  4. 以後、 Consumer key、Consumer secret、AccessToken、AccessTokenSecretを利用してAPIにアクセスする
基本的に、PINCODEの入手は一度だけでいいです。(これを短期間で何回もやってると 401エラーがでるような気がします。真偽は未確認ですが、、、)

アプリを開発する際には、
  • アプリ認証のためにブラウザを起動し認証用URLへ行かせる記述が必要。ウェブアプリの際には、自分のサイトへ戻ってこさせる記述も必要。
  • PINCODEをユーザに入力させる画面とそれを保存する記述が必要。
  • AccessToken、AccessTokenSecretを保存する記述が必要
ということになります。

以上が基本的な考え方ですが、アプリの形態によりちょっとした補足をしておきます。


【マルチユーザでないアプリの場合】
自分しか使わない、あるいはbotのようなアプリの際に、わざわざPINCODEを入手してAccessToken、AccessTokenSecretを入手するプログラムの記述と操作をするのははばからしいです。Twitter上のアプリのサイトには、自分用のAccessToken、AccessTokenSecretを入手するボタンがあります。これをコードに埋め込んでおけば、手軽に利用できます。

【PINCODE入手させることが困難な場合】
アプリによっては、PINCODE入手のためにウェブサイトにアクセスさせることが困難なケースが考えられます。あるいは、いったんウェブブラウザでサイトに行かせるというのは、ユーザビリティの観点からもいまいちです。その際には、xAuth認証(AccessToken、AccessTokenSecretを入手する最初の時だけ、ID、パスワードを入力させる)という枠組みもあります。これを利用する際には、Twitterへメール申請が別途必要です。

2009-11-05

C++/CLIでTwitterクライアントプログラミング~とりあえずつなげてみる~

<注意;現在、OAuth認証が必須となったようですので、下記はあまり参考にならないでしょう。>
Twitterを研究テーマにしようと検討中なので、とりあえずでC++/CLIでのTwitterクライアントを実装しています。C#はけっこうサンプルも載ってますが、C++/CLIはあんまりないので、参考になれば、、、、ま、どっちもだいたい同じなんですけどね。 下記は、WebClientクラスを使ってますが、HttpWebRequestクラスを使う方法もあります。


  String^ result;
    String^ url = "http://twitter.com/statuses/friends_timeline.xml";
    NetworkCredential^ nc = gcnew NetworkCredential(id,password);  
   // WebClientを使うなら、こんな感じ
    try{
        WebClient^ client = gcnew WebClient();
        client->Credentials = nc;

        client->Encoding = Encoding::UTF8;

        array^ data =client->DownloadData(url);
        String^ result =Encoding::UTF8->GetString(data);
        return result;

    }catch(System::Net::WebException^ e){
        //ここでなんらかのエラー処理をする
        System::Diagnostics::Debug::WriteLine("エラー:"+ e->Response->ToString());
        return "";
    }