まだxAuth対応していませんのでしばらくおまちください。

2010年8月24日火曜日

Real Studio xAuth Class

Real Studio用のxAuth Classが出来ましたので、一応公開いたします。

This xAuth Class needs SHA1 Class.
http://www.declareSub.com
direct link
http://www.declaresub.com/article/132/sha1-update

This xAuth Class needs HTTPSecureSocket with REALStudio Pro.

//Sample Code
dim xAuth1 as  xAuth
dim xAuthBool as Boolean
dim myoauth_token,myoauth_token_secret as String
xAuth1 = new xAuth
xAuth1.set_consumer_key("YOUR_CONSUMER_KEY")
xAuth1.set_consumer_secret("YOUR_CONSUMER_SECRET")
xAuthBool = xAuth1.getXAuthToken("ID","PASS")
if xAuthBool = true then
myoauth_token = xAuth1.get_oauth_token()
myoauth_token_secret = xAuth1.get_oauth_token_secret()
end if

dim server_res as string
//GET
server_res = xAuth1.xAuthRequest("https://twitter.com/statuses/home_timeline.xml","GET","count=5")

//POST
server_res = xAuth1.xAuthRequest("https://twitter.com/statuses/update.xml","POST","status=TEST")

DOWNLOAD

2010年6月7日月曜日

REAL Studio xAuth Simple Sample


REAL Studio xAuth Simple Sample
変数やTimeStampも固定で下記で成功しました。

http://www.monkeybreadsoftware.de/realbasic/plugins.shtml

が必要です。

  dim str1,str2,str3 as string
  
  str1 = "https://api.twitter.com/oauth/access_token"
  str1 = EncodeURLComponent(str1)
  str1 = "POST&" + str1 + "&"
  
  str2 = "oauth_consumer_key=T2eStTeSTTE9s7ttEsttE"
  str2 = str2 + "&oauth_nonce=a68bbb5887d77fbf72f57bb75ad80070"
  str2 = str2 + "&oauth_signature_method=HMAC-SHA1"
  str2 = str2 + "&oauth_timestamp=1274401561"
  str2 = str2 + "&oauth_version=1.0"
  str2 = str2 + "&x_auth_mode=client_auth"
  str2 = str2 + "&x_auth_password=TESTPASS"
  str2 = str2 + "&x_auth_username=TESTUSER"
  str3 = "TestTEsttes9ttEstTestTEs14ttEST8TESt6testtE"+"&"
  dim signature_base_string,signature_string as String
  signature_base_string = str1 + EncodeURLComponent(str2)
  dim i,ccount as integer
  dim test1,test2,sbs as string
  dim s as SHA1MBS
  dim HMACSHA1,HMACSHA2,HMACSHA3 as string
  s=new SHA1MBS
  HMACSHA1 = s.HMAC(str3,signature_base_string)
  signature_string = EncodeBase64(HMACSHA1)
  signature_string = EncodeURLComponent(signature_string)
  
  gURL = "https://api.twitter.com/oauth/access_token?" + str2 + "&oauth_signature=" + signature_string
  
  dim header(-1) as string
  dim c as MyCURL
  
  c=new MyCURL
  c.OptionVerbose=true
  c.OptionURL = gURL
  
  c.OptionCustomRequest="POST"
  
  header.Append "Content-Type: text/xml"
  c.SetOptionHTTPHeader header
  
  msgbox str(c.Perform)
  



STR1:
POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Faccess_token&

STR2:
oauth_consumer_key=T2eStTeSTTE9s7ttEsttE&oauth_nonce=a68bbb5887d77fbf72f57bb75ad80070&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1274401561&oauth_version=1.0&x_auth_mode=client_auth&x_auth_password=TESTPASS&x_auth_username=TESTUSER

STR3:
TestTEsttes9ttEstTestTEs14ttEST8TESt6testtE&

signature_base_string:
POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Faccess_token&oauth_consumer_key%3DT2eStTeSTTE9s7ttEsttE%26oauth_nonce%3Da68bbb5887d77fbf72f57bb75ad80070%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1274401561%26oauth_version%3D1.0%26x_auth_mode%3Dclient_auth%26x_auth_password%3DTESTPASS%26x_auth_username%3DTESTUSER

signature_string:
Q4nDVCx6WRUO1lxRLxLHemj2P64%3D



(make timestamp sample)

  dim d as New date
  dim d2 as New Date(1970,1,1)
  dim timestamp as String
  dim ts,ts2,ts3 as Double
  timestamp = Format((d.TotalSeconds -  d2.TotalSeconds),"#")

2010年5月23日日曜日

phpでxAuthのテスト

http://www.sdn-project.net/labo/oauth.html
を改造してxAuthに対応してみました。
Twitter API Wiki / OAuth Examplesのtwitteroauthを使用します。
(http://github.com/abraham/twitteroauth)
必要なファイルはOAuth.phpとtwitteroauth.phpです。
下記プログラムで実現できました。

なおxAuthはtwitterの中の人にメールを出して許可をもらわないと使えませんのでご注意ください。
getXAuthToken("your_id","your_password");

// home_timelineの取得。TwitterからXML形式が返ってくる
$req = $to->OAuthRequest("https://twitter.com/statuses/home_timeline.xml","GET",array("count"=>"5"));

// XML文字列をオブジェクトに代入する
$xml = simplexml_load_string($req);

// foreachで呟きの分だけループする
foreach($xml->status as $status){
      $status_id = $status->id;  // 呟きのステータスID
      $text = $status->text;  // 呟き
      $user_id = $status->user->id;  // ユーザーナンバー(数字の方は絶対に変わらない)
      $screen_name = $status->user->screen_name;  // ユーザーID(いわゆる普通のTwitterのID)
      $name = $status->user->name;  // ユーザーの名前(HNなど)
      echo "

".$screen_name." / ".$name." この呟きのパーマリンク \n".$text."

\n"; } ?>
signatureは実際どの文字列を使っているかが知りたかったら
OAuth.phpのget_signature_base_stringの部分で調べる事が出来ます。
public function get_signature_base_string() {
    $parts = array(
      $this->get_normalized_http_method(),
      $this->get_normalized_http_url(),
      $this->get_signable_parameters()
    );

    print implode('&', $parts);
    $parts = OAuthUtil::urlencode_rfc3986($parts);
    print implode('&', $parts);

    return implode('&', $parts);
  }

build_signatureでhash_hmac部分を調べる事が出来ます。

to_postdataではpostされるデータを調べる事が出来ます。

2010年5月9日日曜日

xAuth

OAuthでずっと悩んでいたのでいました。(というのもマイナーな開発言語のためクラス等を公開してくださるかたがいなくて自分で実装しなくてはいけないのですが、私程度のレベルの人間にはハードル高くて。。。)
ここしばらくphpのソースなどにらめっこしてテストしていたのです。

Twitter API プログラミングが発売されたので、購入してみました。

そこでxAuthという簡易版OAuthでデスクトップクライアントに良い認証方法がある事が掲載されていましたのでこちらを調べる事に。
とりあえず。こちら良さそうなのですがtwitterの中の人にメールを出して申請するそうな。英語は書けないのでメールのサンプルを検索して申請してみました。うまくいくといいなぁ。

2010年5月3日月曜日

OAuth

わかってはいたのですが、後で実装しようとしていたOAuth認証。
twitter-joは簡単なbasic認証を使っているのですがOAuth認証はサンプルソースやライブラリも多いので何とかなるだろうと思っていたのですが、全然無い!!!REAL Studioというマイナー?な開発環境を使っているからなのですが。。。
これは困った。basic認証が使えるタイムリミットは短いという事でただいま自作を検討中です。うむむむむ。こいつはまずいなぁ

2010年4月27日火曜日

twitter-jo更新。

昨日のテスト結果を修正して本日また更新しました。他にも機能追加したい事があるのですが、難しそうなので現状でのアップ。お試し下さい。

テストしていただいた方から
ウィンドウの幅を変更すると、text field やら button の表示位置がおかしなことになる。
→訂正
起動直後にスクロールバーが点滅する。
→スクロールバーはあまり書き換えないようにしました。
ハッシュタグはいったんアプリを終了して再起動すると全部クリアされてしまう。
→訂正しました。
左の帯での色の区別は、やっぱり区別がつきにくい。
→とりあえず太くしました。(今後はアイコンも考えようかな)

自分で直した
小さいウィンドウ時にリンクが効かない
→直しました。
通信に失敗すると応答無しになってしまう。
→時間制限をつけました。うまくいくかはまだ不明。
小さいウィンドウ時のリサイズの挙動がおかしい
→訂正
小さくなる瞬間最前面アプリが入力中でも出来ない時がある。
→不明???

優先的に追加したい機能
6/20にtwitterのbasic認証が不可になるらしいので直さなくてはいけない。
URL短縮機能をつけたい。
DMを見れるようにすべきか?

2010年4月25日日曜日

Windows版ツイッタークライアントを更新しました。

Windows版も更新しました。まだまだバグもあると思います。すいません。