2011-01-19 3 views
0

Je suis en train de créer un cours qui facilitera l'accès à l'Api d'Adobe Facebook Graph sans toutes les choses sérieuses qui entrent en jeu. Voici comment j'y vais: J'ai un FbNewLib.as et un Test.as ainsi que le test principal.Impossible de lancer Facebook.init

Dans le FbNewLib.as, j'ai la ligne d'initialisation pour initialiser l'API Facebook.

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"; 
     } 
    } 

Dans mes Test.as:

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; 
    } 

Cependant, quand je le tester dans mon testApp dans mon testApp dans Facebook, le Facebook.init() ne fonctionne pas. Ce qui est dans le textbox_txt est juste "read_stream, null, testString"

Quelqu'un peut-il aider? Est-ce seulement possible? Merci!

Répondre

0

Ceci est un moyen de se connecter à Facebook en utilisant Graph API. Tout est expliqué dans le commentaire. C'est en fait la connexion à Facebook, pas d'affichage sur les murs ou quoi que ce soit. Cette partie peut être trouvée sous cette classe.

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)); 
     } 
    } 
} 

Cela devrait prendre soin de se connecter à Facebook. Si vous voulez poster sur les murs ou n'importe quoi, vous pouvez trouver un petit exemple ci-dessous. Si cela ne suffit pas, vous pourriez avoir oublié d'ajouter du code à votre fichier html. Assurez-vous d'ajouter le code suivant à la tête de votre fichier html:

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

Et vous avez aussi besoin d'un div appelé fb-root, a déclaré comme ça.

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

Il est à peu près nécessaire de définir votre URL de domaine et de toile directement dans les paramètres de votre application. Sinon, vous ne pourrez pas voir les erreurs lorsque facebook.init() s'exécutera et n'entrera pas dans cette fonction.

Questions connexes