2011-07-29 6 views
11

を開きます。のFacebookのJavaScript SDK:FB.ui私はFacebookのiframeのアプリで次のコードでフィードダイアログ「あなたのウォールに投稿」が表示しようとしていますポップアップウィンドウ

<div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"> 
    </script> 
    <script> 
    FB.init({ 
     appId:'249725835046216', cookie:true, 
     status:true, xfbml:true 
    }); 

    FB.ui({ method: 'feed', 
     message: 'Facebook for Websites is super-cool', 
     name: 'Facebook Dialogs', 
     link: 'http://developers.facebook.com/docs/reference/dialogs/', 
     picture: 'http://fbrell.com/f8.jpg', 
     caption: 'Reference Documentation', 
     description: 'Dialogs provide a simple, consistent interface for applications to interface with users.' 



     }); 
    </script> 

問題はそれということですこのように新しいポップアップウィンドウに表示されている:

enter image description here

代わりのポップアップウィンドウに表示されることなく、このようなとして登場:

ポップアップがブロックされている現代のほとんどのWebブラウザでは、フィードダイアログを新しいポップアップウィンドウに表示したくありません。なぜこれが起こっているのか分かりません。助けてください。

答えて

9

ユーザーがあなたのアプリケーションを承認していない場合は、ポップアップが表示されます。 Facebookはセキュリティ上の理由からそのように機能しました。最初に承認を求めるプロンプトが表示されたら、インラインダイアログが表示されます。

承認のリクエスト自体はポップアップとなりますが、一度だけ行う必要があります。私はsomeecardsのFacebookアプリで、あなたが望むやり方で、このようにして仕事をしています。 javascriptコードを自由に取り出せます。アプリに固有のものではありません。

+3

ここでコードを共有しないでください。 –

1

私は同じUIの問題があり、ポップアップウィンドウもあまり好きではありません。

私はちょうどa linkを見つけました。

同じページでページをリダイレクトするのに役立ちます。しかし、それは私たちの問題を完全に解決するものではありません。

8

FB.getLoginStatus内FB.uiを入れ、これを試してみてください。私の場合は

FB.getLoginStatus(function(response) { 
    if (response.authResponse) { 
    FB.ui({ 
     method: 'feed', 
     ... 
     display: 'dialog'  
    }); 
    } 
}); 
+2

反対の動作を強制するには、 'display: 'popup''を使用してください。これは、FB.uiの呼び出しが鉱山のようなiframeにあり、iframeにダイアログをトラップしたくない場合に便利です。 –

+0

あなたは私の人生を救ってくれてありがとう! :) – naCheex

0

問題は、私はこれがデフォルトだと思う非同期

 display: 'async', 

にディスプレイをSETINGによって解決されているようですページのタブとキャンバスのために、しかし時々、メインウィンドウ内に表示されるのではなく、新しいポップアップをロードします。 それを設定した後(私の場合はページタブ)以来、私はその後..

1

私はこれがちょっと古いと知っていますが、この問題を自分自身で解決しようとするとこのページを見つけました。

この問題を抱えている他の誰かの利益のために、私はページの読み込み時にダイアログを呼び出そうとしていたので、これが起こっていました。それをユーザーのトリガーイベント(クリックなど)に移動すると、それが解決されました。

0

「リダイレクト」セクションには、Feed Dialogのためのドキュメントにあります:

https://www.facebook.com/dialog/feed? 
    app_id=145634995501895 
    &display=popup&caption=An%20example%20caption 
    &link=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F 
    &redirect_uri=https://developers.facebook.com/tools/explorer 

ですから、正しくREDIRECT_URLを設定し、JavaScriptでwindow.location=(this url)を行うことができ、これは、ポップアップせずに動作するはずです。

v2では、フィードダイアログが廃止されました。0、その代わりにShare Dialogチェックアウト:

https://www.facebook.com/dialog/share_open_graph? 
    app_id=145634995501895 
    &display=popup 
    &action_type=og.likes 
    &action_properties=%7B%22object%22%3A%22https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F%22%7D 
    &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer 

'表示=ポップアップ' ビット:

https://www.facebook.com/dialog/share? 
    app_id=145634995501895 
    &display=popup 
    &href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F 
    &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer 

がオープングラフの物語を共有するには:

がリンクを共有するには共有画面の外観に影響し、新しいウィンドウを開きません。 displayの可能な値は次のとおりです。

async, iframe, page, popup, touch, wap 
関連する問題