Actionscript3.0コード取り込み用Javascriptソースコード
(コンパイルされたActionscript3.0コードをDocumentClass.swfとして以下Javascriptで取り込んで表示します)

Actionscript3.0ソースコード
↓DocumentClass.as(このソースをコンパイルして、上記Javascriptで取り込んで表示しているDocumentClass.swfとしています)
package { import flash.display.*; import flash.events.*; import flash.text.*; import flash.external.ExternalInterface; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; import flash.net.URLLoader; import com.facebook.graph.Facebook; import com.adobe.serialization.json.JSON; public class DocumentClass extends MovieClip { //自分が登録したFacebookアプリのIDに変更してください。 //private var APPLICATION_ID:String = 'YOUR_APPLICATION_ID'; private var APPLICATION_ID:String = "xxxxxxxxxxxx"; private var _myID:String; //自分のユーザID。 private var _accessToken:String; //APIを叩くためのアクセストークン。 private var loginAuthStatus : Boolean = false;//ログイン・認証状態 private var button : SimpleButton;//ボタン private var loadFriendsListBtn : SimpleButton;//ボタン private var postMessageBtn : SimpleButton;//ボタン private var postMessageByURLReqBtn : SimpleButton;//ボタン private var tf:TextField; private var loader : URLLoader = new URLLoader(); private var request : URLRequest; public function DocumentClass() { addEventListener(Event.ADDED_TO_STAGE, init); } private function init(evt:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); tf = new TextField(); tf.x = 10; tf.y = 10; tf.width = 400; tf.height = 450; tf.text = 'ver 0.0.1\n'; //tf.mouseWheelEnabled = true; addChild(tf); button = new CustomButton("初期化"); button.x = 380; button.y = 350; button.addEventListener(MouseEvent.CLICK, onClick); addChild(button); loadFriendsListBtn = new CustomButton("友達リスト"); loadFriendsListBtn.x = 380; loadFriendsListBtn.y = 320; postMessageBtn = new CustomButton("投稿"); postMessageBtn.x = 380; postMessageBtn.y = 350; postMessageByURLReqBtn = new CustomButton("投稿ByURLReq"); postMessageByURLReqBtn.x = 380; postMessageByURLReqBtn.y = 380; } private function onClick(evt:MouseEvent):void { button.removeEventListener(MouseEvent.CLICK, onClick); //Facebook を初期化します。 tf.appendText('Facebook.init(); 初期化を開始します...\n'); //Facebook.init('取得したアプリケーションID', initCallBack); このメソッドで初期化します。うまく行けば、コールバックが返ってきます。 Facebook.init(this.APPLICATION_ID, initCallBack); } private function initCallBack(response:Object, fail:Object = null):void { tf.appendText('initCallBack\n'); if (response) { //初期化成功。 tf.appendText('Facebook 初期化に成功.\n'); tf.appendText('あなたのユーザID:' + response.uid + '\n'); } else { //初期化失敗 tf.appendText('Facebook 初期化に失敗.\n'); } //認証を実行します。 tf.appendText('Facebook.login(); 認証を開始します...\n'); //セッション状態が変わった時に呼ばれる関数を設定しておきます。 ExternalInterface.addCallback('sessionChange', onSessionChangeHandler); //アプリが実行する操作範囲 (参照:Extended Permissions - http://developers.facebook.com/docs/authentication/permissions var permissions:Array = ['publish_stream']; //認証を実行します。第1引数にはコールバック関数、第2引数にパーミッションを渡します; Facebook.login(loginCallBack, {perms:permissions.join(',')}); } private function loginCallBack(response:Object, fail:Object):void { //ログイン完了 if (response) { tf.appendText('ログイン・認証に成功.\n'); tf.appendText('あなたのユーザID:' + response.uid + '\n'); } else { tf.appendText('ログイン・認証に失敗.\n'); } } private function onSessionChangeHandler(session:String, extendedPermissions:Object = null):void { //セッション状態に変更あり。 tf.appendText('セッション状態に変更あり.\n'); if (session) { //JSONなのでデコードします。 var response:Object = JSON.decode(session); tf.appendText('あなたのユーザID:' + response.uid + '\n'); //ここでアクセストークンを取得することができます tf.appendText('アクセストークン:' + response.access_token + '\n'); this._myID = response.uid; this._accessToken = response.access_token; //自分のIDとアクセストークンを取得しました。これでAPI使用の準備が出来ました。 loginAuthStatus = true; //「トモダチ」「投稿」ボタンが表示されるように制御 readyToUseAPI(); } else {} } private function readyToUseAPI():void { //IDとアクセストークンを取得後のボタン設定 if(loginAuthStatus) { //「初期化」ボタンをリムーブ removeChild(button); //「友達リスト」ボタンを設定 addChild(loadFriendsListBtn); loadFriendsListBtn.addEventListener(MouseEvent.CLICK, loadFriendsList); //「投稿」ボタンを設定 addChild(postMessageBtn); postMessageBtn.addEventListener(MouseEvent.CLICK, postMessage); //「投稿ByURLReq」ボタンを設定 addChild(postMessageByURLReqBtn); postMessageByURLReqBtn.addEventListener(MouseEvent.CLICK, postMessageByURLReq); } } private function loadFriendsList(evt:MouseEvent):void { //友達一覧をロードしてみます tf.appendText('友達一覧をロード\n'); //APIは、 Facebook.api('リクエストするAPI', コールバック関数, {access_token:アクセストークン文字列}); で叩きます。 //友達一覧取得のAPIは /me/frineds です。 Facebook.api('/me/friends', loadFriendsHandler, {access_token:this._accessToken}); } private function postMessage(evt:MouseEvent):void { //メッセージをポストしてみます tf.appendText('メッセージをポスト\n'); //APIは、 Facebook.api('リクエストするAPI', コールバック関数, {access_token:'アクセストークン文字列',message:'メッセージ文字列'},'POST'); で叩きます。 //つぶやき投稿のAPIは /me/feed です。 Facebook.api('/me/feed', postMessageHandler, {access_token:this._accessToken, message:'This is Message String for Facebook POST Message API Test'},'POST'); } private function postMessageByURLReq(evt:MouseEvent):void { //Facebook Open Graph API(参照:Graph API Overview - http://developers.facebook.com/docs/api/ //より以下のようにFacebookへメッセージをポスト //一般的なやり方なのかどうかは分かってませんが。。。(追記:↑その後上記のようなFacebook API呼び出し方法を教えていただきました) //ユーザーIDと投稿用URLで送信先URLを作成して、必要パラメータをセットして送信先URLへポストします //ここでの必要パラメータはアクセストークンと送信用メッセージです var postUrl : String = "https://graph.facebook.com/" + this._myID + "/feed"; request = new URLRequest(postUrl); //送信先URLにポストするパラメータをセット request.method = URLRequestMethod.POST; var variables : URLVariables = new URLVariables(); variables.access_token = this._accessToken; variables.message = "This is Message String for Facebook POST Message API Test By URLRequest"; request.data = variables; //リクエストハンドラをセット loader.addEventListener(Event.COMPLETE, onPublishComplete); loader.load(request); } private function loadFriendsHandler(response:Object, fail:Object):void { if (response) { tf.appendText('友達一覧取得成功\n'); var friends:Array = response as Array; for (var i:int = 0; i < friends.length; i ++) { tf.appendText(friends[i].name + 'さん ユーザid:' + friends[i].id + '\n'); } } else {} } private function postMessageHandler(response:Object, fail:Object):void { if (response) { tf.appendText('メッセージポスト成功\n'); tf.appendText('メッセージ This is Message String for Facebook POST Message API Test をポスト\n'); } else {} } private function onPublishComplete(e:Event):void{ tf.appendText("メッセージ投稿成功\n"); tf.appendText('メッセージ This is Message String for Facebook POST Message API Test By URLRequestをポスト\n'); } //ボタン用グラフィック作成 private function makeRoundRect(color:uint):Sprite{ var s:Sprite = new Sprite(); s.graphics.beginFill(color); s.graphics.drawRoundRect(0, 0, 100, 20, 15); s.graphics.endFill(); s.alpha = 0.8; return s; } } } import flash.display.*; import flash.system.*; import flash.text.*; //カスタムボタン class CustomButton extends SimpleButton { //コンストラクタ public function CustomButton(label:String="") { //状態 upState = makeSprite(label,0x00FF00); overState = upState; downState = makeSprite(label,0xFF0000); hitTestState = upState; } //ボタン用スプライト作成 private function makeSprite(text:String,color:uint):Sprite{ //ボタン用ラベル作成 var label : TextField = new TextField(); label.text = text; label.autoSize = TextFieldAutoSize.CENTER; label.selectable = false; //ボタン用スプライト作成 var sp:Sprite = new Sprite(); sp.graphics.beginFill(color); sp.graphics.drawRoundRect(0, 0, 100, 20, 15); sp.graphics.endFill(); sp.alpha = 0.8; sp.addChild(label); //ラベル用フォーマット設定 var format:TextFormat=new TextFormat(); format.font = "Courier New"; format.bold = true; format.size = 13; label.setTextFormat(format); return sp; } }