2012-01-31 13 views
0

私はFBアプリケーションとしてホスティングしているようなページのようなボタンを持っています。質問は:データのhrefを空白のままにしておくと、好みのキャンバスURL「www.example.com/page.aspx」が設定されます。 Window.location.hrefまたはwindow.top.locationはすべてキャンバスURLを指します。Facebookアプリケーション - FB like - アプリケーションのURL

キャンバスのURLではなく、アプリのURLを好きにしたいと考えています。とにかく私はコードの中でこれを得ることができますか?またはjavascriptで?私はこれを指定したくありません。なぜなら、複数のアプリケーションでそれぞれ独自のアプリURLを指し示したいからです。

+0

詳しくはこちらをご覧ください。あなたが使用するSDK、スクリプト言語などを含むいくつかの詳細が必要なのを助けるために –

+0

私はJavascript APIを使用しています。 – Kunal

+0

Alexandru:私はwindow.top.location.hrefが一番上の親の値を与えることを発見しました。私の問題は、javascriptでこれを記録し、実際のページがロードされる前にコードに渡すことができるようになっています。プラグインのようにfbに設定するURLを取得するには、これが必要です。 – Kunal

答えて

1

通常、アプリで初期化する必要があるため、設定ではキャンバス名(または名前空間)を使用する必要があります。 もう一つの方法は、グラフのapiにconvasの詳細を問い合わせることです。

var app_data = FB.api("/you_app_id"); 

あなたがGraph API Explorerで最初にそれをテストする必要があります。クエリは次のようになります。また、各ページリクエストでこれを行う場合は、これは高価な呼び出しであることを覚えておいてください。キャンバス名を含む現在ロードされているアプリケーションに関するすべての情報を配列に取得します。キャンバス名を使用すると、次のようにアプリのURLを構成できます。http://apps.facebook.com/your-canvas-name

+0

おかげでAlexandru。面白いやり方。私はアプリがロードされているIframeの親URLを何らかの形で見つけることが可能かどうか疑問に思っていましたか? – Kunal

+0

親URLは、apps.facebook.com/[your_canvas_namespace]と、上記のようなFB.apiを照会した名前空間のようなapp urlです。 –

0

短い回答:いいえ!

長い答え:別のドメインのフレームから情報を取得することはできません。これはセキュリティのためです。あなたが試してみると:

...フレームが同じドメインにある場合、あなたはURLを取得します。それ以外の場合は、セキュリティ例外が発生します。