0

私は招待ボタン (別名 FB.ui -> apprequests) を備えたページ タブ アプリを持っていますexample.com/pagetab。 Facebook内からiframeとしてロードしても、何も起こりません。最初は、jqueryがどのドキュメントの準備ができているかわからないためにボタンがリンクされていないのが問題だと思っていましたがonclick、Chromeコンソールからコマンドを使用して入力することに切り替えました(もちろん、iframeのスコープで)が、何も起こりません...これはバグですか、それとも何か不足していますか?

最小限のコード:

window.fbAsyncInit = function() {
  FB.init({
    appId      : '123456789', // App ID
    channelUrl : '//fbjscache.php', // Channel File
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
  });  };
 (function(d){
   var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   ref.parentNode.insertBefore(js, ref);
}(document));
function sendInvite() {
  console.log("Inviting...");
  FB.ui({method: 'apprequests',
   title: 'Check out this great app!',
   message: 'Join the fun!',
  }, inviteCallback);
}

するとページに

<a href="javascript:void(null)" class="invite" onclick="sendInvite()"><div class="facebookButton">Invite</div></a> 

このコードは、ページが直接ロードされた場合は期待どおりに機能し (キュートなフレンド セレクタ ダイアログがポップアップ表示されます)、iframe からロードされた場合は何もしません。これはバグですか、それとも私が理解していない隠し設定/JS 癖がありますか?

4

1 に答える 1

5

関連する質問を発見した後 ( [ページ] タブで [送信] ダイアログが機能しない)、オプションにパラメーターを手動で含める必要があることが問題であることに気付きましたdisplay : 'popup'。そのため、動作するコードには次のものが必要です。

function sendInvite() {
    FB.ui({method: 'apprequests',
        title: 'Check out this great app!',
        message: 'Join the fun!',
        display: 'popup'
    }, inviteCallback);
}

この動作は、ドキュメント が言うべきこととは明確に反しています。

プラットフォーム ダイアログはすべて、Web とモバイル Web の両方のさまざまな表示コンテキストでシームレスに実行されるように構築されています。JS、iOS、または Android SDK を使用してダイアログを呼び出している場合、表示モードは、ユーザーが使用しているプラ​​ットフォームとデバイスに基づいて自動的に選択されます。

「ページタブ」と「デスクトップブラウザ」の難解な組み合わせに対して、自動選択が「表示なし、警告またはエラーメッセージなし」でない限り。

記録として、適切なキャンバス アプリにはこの制限はありません。完全なアプリで同じコードを行ごとに使用したところ、すべて正常に機能しました。

于 2012-06-03T18:01:37.073 に答える