2008年9月17日水曜日

AdobeAIRでBasic認証をする

...ことが出来ました!

方法としては、
1. {user}:{password} をBase64でエンコード
2. HttpHeaderに"Authorization"をKeyに、"Basic " + {1の結果} を追加
...と、よく記事に書いてある方法と基本方針一緒です。

ですが、Base64のライブラリをDownloadして試していたんですが成功しなくて。。
(私の使い方が悪かったのかもしれないんですが)

そこで色々探っていたら、Base64のライブラリは何処かで拾ってこなくても、組み込まれているのを使えば出来るのが判明!
ということで、結局HttpServiceに以下のコードを入れるだけで無事に動かせました♪


var httpService:HTTPService = new mx.rpc.http.mxml.HTTPService();
var encoder : Base64Encoder = new mx.utils.Base64Encoder();
encoder.encode(user + ":" + password);
httpService.headers["Authorization"] = "Basic " + encoder.toString();


Base64のエンコードするのを自分で自作はしたくないけど、ライブラリを使う必要があるならライセンスをしっかり見ないとなぁー と思っていた矢先だったんで、良かったよぉ...mx.utils.Base64Encoderが組み込まれていて。

確認はFriendFeedのAPIでやってます。他ではまだやってないのですが...
これに合わせて作成途中のAFriendFeedも修正してみました。
該当のソースは、service/FriendFeedService.asになっています。

あ!でも、まだCommentとLikeのPOSTは成功してなくて動きませんっ(笑)

ちなみに、この方法は HTTP Authentication for HTTP/GET requests using ActionScript 3の下の方にあるコメント欄で発見しました。
有り難う!> コメントした人
• • •