2012-05-07 15 views
1

Facebookのボタンを押した後、ユーザーがログインしてから、そのwebviewがすぐにfacebookのモバイルサイトに移動します。私が必要とするのは、Facebookのモバイルサイトではなく、私のアプリとのやりとりを継続できるように、そのWebviewが消えることです。ログイン後にfacebookWebViewを削除するにはどうすればよいですか? Flash Builder 4.6 iosの開発

私が晴れていないなら、私は謝罪します。その午前5時と私は、ここで少し狂っているのです。あなたの質問を解決した場合、私は知らないが、私は一瞬をしたので、私は私の経験をご紹介します

<?xml version="1.0" encoding="utf-8"?> 
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    backgroundColor="#2F28C1" title="Setup" 
    creationComplete="application1_creationCompleteHandler(event)"> 
<fx:Script> 
    <![CDATA[ 
     import com.facebook.graph.FacebookMobile; 

     import mx.events.FlexEvent; 

     import views.setup_first.facebook; 
     import views.setup_first.flickr; 
     import views.setup_first.google; 
     import views.setup_first.tumblr; 
     import views.setup_first.twitter; 

     public var permissions:Array = ["user_birthday", "read_stream", "publish_stream"]; 

     protected function application1_creationCompleteHandler(event:FlexEvent):void 
     { 
      FacebookMobile.init("262320357178421", loginHandler); 

     } 

     protected function loginHandler(success:Object,fail:Object):void 
     { 


     } 

     protected function login():void 
     { 
      var facebookWebView:StageWebView = new StageWebView(); 
      facebookWebView.viewPort = new Rectangle (0,0, stage.width, stage.height); 
      FacebookMobile.login(loginHandler, this.stage, permissions, facebookWebView); 
      trace("I'm logged in!"); 

     } 

     protected function logout():void 
     { 
      FacebookMobile.logout(onLogout, "https://m.facebook.com/dialog/permissions.request?app_id=262320357178421&display=touch&next=http%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html&type=user_agent&perms=publish_stream&fbconnect=1"); 

     } 

     protected function onLogout(result:Object):void 
     { 
      trace("Perfect Log Out!") 
     } 


    ]]> 
</fx:Script> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 

<s:navigationContent/> 

<s:Button left="62" top="86" click="navigator.pushView(views.setup_first.google)" 
      icon="@Embed('../Setup/Setup_0002_Layer-5.png')"/> 

<s:Button right="64" top="86" click="login()" icon="@Embed('../Setup/Setup_0001_Layer-6.png')"/> 

<s:Button click="navigator.pushView(views.setup_first.tumblr)" horizontalCenter="-4" 
      icon="@Embed('../Setup/Setup_0000_Layer-7.png')" verticalCenter="-14"/> 

<s:Button left="62" bottom="117" click="navigator.pushView(views.setup_first.flickr)" 
      icon="@Embed('../Setup/Setup_0004_Setup.png')"/> 

<s:Button right="63" bottom="117" click="navigator.pushView(views.setup_first.twitter)" 
      icon="@Embed('../Setup/Setup_0005_Layer-1.png')"/> 

<s:Button right="54" bottom="10" label="Skip" click="navigator.pushView(thirdPage)"/> 
<s:Button id="logOut" x="323" y="210" height="28" label="LogOut" fontSize="15" 
      click="logout()"/> 

答えて

0

こんにちはコーリー...コードを見てみましょう。

ユーザーがログインしてアプリケーションをfacebookのアプリケーションにインストールすると、loginHandlerがFacebookSessionで正常にディスパッチされ、facebookWebViewが自動的に削除されます。 しかし、ユーザーがインストールをキャンセルしたり、要求された権限を許可しない場合、イベントは送出されず、facebookWebViewは "Success"という単語の白いページを表示します。 location chageイベントのfacebookWebViewにリスナーを追加することを修正しました。次に、facebookWebViewは、ユーザーのエラーが拒否されたとき(ユーザーがアプリケーションを許可しないときに送出される)など、メソッドが送出されたことを示すURLを変更します。 これは私のコードです:あなたはfacebookWebViewを削除するために見ることができるように、私はビュー内の変数ではなく、関数のローカル変数を持って

private var facebookWebView:StageWebView = new StageWebView(); 

protected function login():void{ 
    facebookWebView.addEventListener(LocationChangeEvent.LOCATION_CHANGE, locationChange); 
    facebookWebView.addEventListener(LocationChangeEvent.LOCATION_CHANGING, locationChange); 
    facebookWebView.viewPort = new Rectangle(0, 0, stage.width, stage.height); 
    FacebookMobile.login(onLogin, this.stage, permissions, facebookWebView); 
} 

private function locationChange(e:LocationChangeEvent):void 
{ 
    var url:String = e.location; 
    if(url.search("error") != -1) 
     removeFacebookView(); 
} 

protected function onLogin(success:Object, fail:Object):void{ 
    if(success){ 
     //save user content FacebookSession(success).user 
     removeFacebookView(); 
     setCurrentState("login"); 
    } 
} 

private function removeFacebookView():void 
{ 
    facebookWebView.removeEventListener(LocationChangeEvent.LOCATION_CHANGE, locationChange); 
    facebookWebView.removeEventListener(LocationChangeEvent.LOCATION_CHANGING, locationChange); 
    this.actionBarVisible = true; 
    facebookWebView.stage = null; 
} 

。 (あなたもe.targetでそれを得ることができます)。そしてfacebookWebView.stage = nullでそれを削除します。以前はイベントリスナーを削除しないでください。 loginhandleが成功してディスパッチされ、エラーが発生したときにfacebookWebViewを削除する必要がある場合のみ。

関連する問題