2011-01-19 18 views
0

私は、Adobe Facebook Graph APIにアクセスするためのクラスを作成しようとしています。これはどうやって行っているのでしょうか?これは私のことです:私は1つのFbNewLib.as Test.asと主要なtest.flaがあります。Facebook.initを起動できません

FbNewLib.asには、Facebook APIを初期化するためのinit行があります。

私Test.asで
package 
{ 
import com.facebook.graph.Facebook; 
import com.facebook.graph.data.FacebookSession; 

import flash.external.ExternalInterface; 

public class FbNewLib 
{ 
    protected static const app_id:String = "155006914551234" //replace with App Id; 
    public var scope:String; 
    public var userId:String; 
    public var testString:String; 

    var session:FacebookSession; 

    public function FbNewLib() 
    { 
     trace("FbNewLib initiated.") 
    } 

    public function initFacebookLib(scopeString:String):void 
    { 
     scope = scopeString; 
     testString = "testString"; 

     Facebook.init(app_id, onInit); 
    } 

    protected function onInit(result:Object, fail:Object):void 
    { 
     trace("onInit"); 
     testString = "testStringONINIT"; 

     if (result) 
     { //already logged in because of existing session 
      trace ("On init, already logged in."); 

      testString = "testStringSUCCESSFUL"; 

      session = Facebook.getSession(); 
      userId = session.uid; 
     } 
     else 
     { 
      trace("On init, not logged in."); 

      testString = "testStringUNSUCCESSFUL"; 
     } 
    } 

public function Test() 
    { 
     trace("connected to test.fla"); 

     init_btn.addEventListener(MouseEvent.CLICK, initFbLib); 
    } 

    private function initFbLib(e:MouseEvent):void 
    { 
     gotoAndStop(2); 

     var fb:FbNewLib = new FbNewLib(); 
     fb.initFacebookLib("read_stream"); 

     textBox_txt.text = fb.scope + " " + fb.userId + " " + fb.testString; 
    } 

しかし、私はFacebookの、Facebook.init(で私でTestAppの私でTestAppでそれをテストするときは)動作しません。 textbox_txtの内容は "read_stream、null、testString"です。

誰でも手伝いできますか?これも可能ですか?ありがとう!

答えて

0

これは、Graph APIを使用してFacebookに接続する方法です。すべてがコメントで説明されています。これは実際にはFacebookへの接続であり、壁や何かへの投稿はありません。その部分はこのクラスの下にあります。

package com.DAL 
{ 
    import com.facebook.graph.Facebook; 
    import flash.events.Event; 
    import com.facebook.graph.data.FacebookSession; 
    import flash.events.EventDispatcher; 
    import flash.events.MouseEvent; 
    import com.fbLoginButton; 
    import com.adobe.serialization.json.JSON; 

    public class FBConnect extends EventDispatcher 
    { 
     /****************************************** 
     * Variables 
     ******************************************/ 
     private var _applicationID:String; 
     private var _extendedPermissions:Object; 

     /****************************************** 
     * Constants 
     ******************************************/ 
     public static const CONNECTED:String = "CONNECTED"; 

     /****************************************** 
     * Properties 
     ******************************************/    
     public function get applicationID():String 
     { 
      return _applicationID; 
     } 

     /****************************************** 
     * Constructor 
     ******************************************/ 
     public function FBConnect() 
     { 
      super(); 

      //Set applicationid 
      _applicationID = "YOUR_ID"; 

      //Set permissions to ask for 
      _extendedPermissions = {perms:"read_stream, publish_stream, user_about_me, read_friendlists, user_photos"}; 

      //Initialize facebook 
      Facebook.init(_applicationID); 
     } 

     /****************************************** 
     * Methods 
     ******************************************/  
     public function login(e:MouseEvent):void 
     {   
      Facebook.login(handleLogin, _extendedPermissions); 
     } 

     private function handleLogin(response:Object, fail:Object):void 
     { 
      dispatchEvent(new Event(CONNECTED)); 
     } 
    } 
} 

これはFacebookに接続する必要があります。壁などに投稿したい場合は、以下の小さな例を見つけることができます。

 /****************************************** 
     * Constructor 
     ******************************************/ 
     public function FBLogic() 
     { 
      super(); 

      _connect = new FBConnect(); 
      _connect.addEventListener(FBConnect.CONNECTED, startLoaders); 

      initLoaders(); 
     } 

     /****************************************** 
     * Methods 
     ******************************************/ 

     ... 

     public function post(message:String):void 
     { 
      var _params:Object = new Object(); 

      _params.access_token = Facebook.getSession().accessToken; 
      _params.message = message; 

      Facebook.api("/" + _userID + "/feed", messagePosted, _params, "POST"); 
     } 

     public function messagePosted(response:Object, fail:Object):void 
     { 
      dispatchEvent(new Event(MESSAGEPOSTED)); 
     } 

     public function login(e:MouseEvent):void 
     { 
      var _loginButton:fbLoginButton = e.target as fbLoginButton; 
      _loginButton.alpha = 0; 
      _loginButton.visible = false; 

      _connect.login(e); 
     } 

この方法で解決できない場合は、htmlファイルにコードを追加することを忘れている可能性があります。あなたのhtmlファイルの先頭に次のコードを追加してください:

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> 

そして、あなたはまた、FB-ルートと呼ばれるのdivを必要とする、このように宣言。

<body> 
    <div id="fb-root"></div> 
    <div id="flashContent"> 
    </div> 
</body> 
0

アプリケーション設定でドメインとキャンバスのURLを正しく設定する必要があります。そうしないと、facebook.init()が実行されたときにエラーを見ることができず、その関数には入りません。