IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Twitter で ActionScript 3.0 のクライアントが出てこない理由 Socket 編

前回の ActionScript 3.0 でクライアントを作ったけどダメだった問題で

http://d.hatena.ne.jp/amachang/20070425/1177528905

Socket でやってみたら?というコメントがあったので

おお!そうだ!と思ってやってみた。

で、ソースはこんな感じ

:
        var socket:Socket = new Socket('twitter.com', 80);

        socket.addEventListener('connect', function(e:Event):void {
            socket.writeUTFBytes('POST ' + API_PATH_PREFIX + apiName + API_PATH_SUFFIX + '\n');
            socket.writeUTFBytes('Host: twitter.com\n');
            socket.writeUTFBytes('Authorization: Basic ' + Base64.encode(username + ':' + password));

            if (opts != null) {
                var variables:URLVariables = new URLVariables();
                for (var propName:String in opts) {
                    variables[propName] = opts[propName];
                }
                var data:String = variables.toString();
                var length:int = data.length;

                socket.writeUTFBytes('Content-Type: application/x-www-form-urlencoded\n');
                socket.writeUTFBytes('Content-Length: ' + length + '\n');
                socket.writeUTFBytes('\n');
                socket.writeUTFBytes(data);
            }
            socket.flush();
        });
:

でも、やっぱり・・・

crossdomain.xml の取得時に

<policy-file-request/>

これの応答がなくて、ダメでした><
残念><

Twitter で ActionScript 3.0 のクライアントが出てこない理由

ActionScript 3.0 + JavaScript でブラウザなんだけど、サーバを介さずに Twitter とやりとりできるツールを作った。

AS はこんな感じ

:
        var loader:URLLoader = new URLLoader();
        var req:URLRequest = new URLRequest(API_PREFIX + apiName + API_SUFFIX);

        req.method = 'POST';
        req.requestHeaders = [];
        if (opts != null) {
            var variables:URLVariables = new URLVariables();
            for (var propName:String in opts) {
                variables[propName] = opts[propName];
            }
            req.data = variables;
        }

        if (callback != null) {
            loader.addEventListener('complete', function(e:Event):void {
                callback(e.target.data);
            });
        }

        loader.load(req);
:

しかし!!!!

localhost ではちゃんと動いていたのに・・・・。サーバに置いた途端動かなくなっちゃった!!!
んー?と思って ngrep してみたら

HTTP/1.1 401 Unauthorized.
:
(略)
:
Sorry, due to abusive behaviour, we have been forced to disable posting from external websites. If you are posting from an API tool, please ensure that the HTTP_REFERER header is not set.

えええええええ!

じゃあ、Referer 消せばいいんだな。これを追加してっと。

        req.requestHeaders = [
            new URLRequestHeader('Referer', '')
        ];

しかし!!!

ArgumentError: Error #2096: The HTTP request header Referer cannot be set via ActionScript.
    at flash.net::URLStream/load()
    at flash.net::URLLoader/load()
:
:

えええええええええええええええええええええええ!!

Twitter が AS3 のライブラリとか出してるから、てっきりできると思ったのにー><
できないなら、もっと早くいってよおおおおおおおおおおおお!!
まじで。俺の深夜の貴重な時間を返せええええええ

はあ。

和製 Twitter 「DooViiChat」 登場!

日本製の Twitter クローンが出来たようですね。

http://chat.doovii.com/

特徴は

まだ β なので

ヘルプがない、デザインがあまり作りこまれていないなどありますが、面白い試みだと思います。
SNS のようにこういうチャットコミュニティがこれから少し流行るのではないでしょうか。

僕のアカウントは

http://chat.doovii.com/amachang です。もしやってる人がいたら登録お願いしますー^^

Twitter モバイルアップデータを作った

すでに「こんにちはこんにちは!!」されちゃって勢いづく Twitter ですが

http://b.hatena.ne.jp/entry/http%3A//hamachiya.com/junk/twitter.html

ぜひぜひケータイから更新したい!

したいよー!

ということで、 Twitter モバイルアップデータを作ったよ!

http://usrb.in/tw/create.html
かなり適当に作った。しかも cgi なのでちょっと重い
でも、普通に便利だよ!!><

一応

自分用に作ったものなのでノークレームでお願いしまつ