Adobe AIRからFacebookのいいね!ボタンを使用する

ちと今回は、Adobe AIRからあるURLに対していいね!を投げたいと思った時に色々と詰まったので技術メモを

Facebookでは色々とAPIを公開してますが、Likeに関してはスパム関係などの関係上APIでは公開していないようです。(Facebook内の記事等に対していいね!は可能です) 指定したWebサイトに対していいね!をすることは現時点では無理だと思います。

ということなので、色々と調べたところ一応ありました。

参考サイト

基本的には上記サイトに記載されてる通りに実装を行えば問題ないです。 が、一応説明していきます。(ちなみにFlexです)

まず、AIR用のFacebookのAPIを利用するライブラリがあるのでそちらを落としてきます。 facebook-actionscript-apiログアウト時のセッションなどのバグがあるので(多分)、それの改修をするためにはswcではなくzipを落としてあげてください。

とりあえず、ダウンロードし終わったらこれについては一旦おいておきます。 次に今回自分が使用した方法を使用するために、ダミー(実際はダミーってわけではないですが)のアプリケーションをfacebook DEVELOPERSで作成してください。

作成が完了したら、アプリに割り当てられているAPP IDを控えておいてください、 次にいいね!ボタンを作成します。
http://developers.facebook.com/docs/reference/plugins/like/ 上記URIからいいね!ボタンを作成し、Get Codeをした際に表示されるダイアログのHTML5からHTMLとJSの処理をコピーして控えておいてください。

mxmlにmx:HTMLを追加します。

<mx:HTML id="like_view"/>

次に先ほど控えておいた、LikeButtonのHTMLおよびJSのソースを整形したものを取得するメソッドなどを適当に実装します。(この部分を動的にしたりすると、場合によっていいね!するURIを変更できたりします)

private function createLikeButton():String
{
    var DOM:String = ""; // HTML Code here
    return DOM;
}

HTMLの出力ソースを取得する処理は基本これのみです。 次にmxmlに設置してあるmx:HTMLに対して、上記ソースコードを設定します。

like_view.htmlLoader.loadString(createLikeButton());

このDOMを読み込むと「いいね!」ボタンが表示されるはずです。 この実装のままだと、おそらくログインしていない場合などの「いいね!」が行えない形になっていますが、そこに関しては後日追記します。