初期化コード:
window.fbAsyncInit = function() {
var bheight = $(document).height() + 50;
FB.init({
appId: appid,
frictionlessRequests : true,
status: true,
cookie: true,
xfbml: true,
oauth: true});
FB.Canvas.setSize({ width:760,height:bheight });
};
// Load the SDK Asynchronously
(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));
次のコードは onclick で呼び出されます。
function sendRequestViaMultiFriendSelector(msg){
FB.ui({
method: 'apprequests',
message: msg
});
}
ポップアップが表示され、ユーザーは友達を選択できますが、送信またはキャンセルした後、ウィンドウが空白になります。ポップアップはまだありますが、白くて空です。Firebug に記録されたエラーはありません。
コールバック関数を追加しても、到達することはありません。
セルフ クロージングの redirect_uri (redirect_uri: ' http://.../self_close.html ') を追加しようとしましたが、ポップアップ リダイレクトを self_close.html に送信した後、その html のコンテンツが <script type="text/javascript">window.close(); </script>
ポップアップだけの場合でも、'選択した友達にリクエストを閉じたり、送信したりしません。
不思議なことに、数週間前まではこれが機能していましたが、友達を何人か選択して招待状を送ると、ポップアップが閉じてしまいました。
私のアプリはローカルホストで実行されており、サンドボックス モードであり、他のアプリの管理者、テスト ユーザー、通常のユーザーなどを招待しようとしました。以前は機能していました。
今何が起こっているのでしょうか?
私がチェックした同様の質問:
- FB.ui ポップアップ ウィンドウが閉じない
- Facebook アプリのリクエスト ダイアログがリクエストを送信しない
- http://facebook.stackoverflow.com/questions/4646441/how-to-close-a-facebook-sdk-dialog-opened-with-fb-ui
前もって感謝します!
アップデート
method:apprequests の代わりに method:feed を使用してテスト メソッドを追加しました。
function feed_test() {
// calling the API ...
var obj = {
method: 'feed',
name: 'Feed test',
caption: 'Test',
description: 'Test'
};
function callback(response) {
document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
}
FB.ui(obj, callback);
}
onclick でこのメソッドを呼び出すと、ポップアップが表示され、コメントを入力して送信すると、ポップアップも空白になります。ポップアップは閉じていませんが、投稿は私のウォールに公開されています。
更新 2
Facebook の外部で ( http://facebookapp.localhost/を使用して) ブラウザでアプリを開くと、apprequest が正常に機能し、無効なアドレス バーなしでポップアップが開くことに気付きました。FB 内で友達を招待しようとすると、ポップアップに次のような灰色のアドレス バーが表示されます。
https://www.facebook.com/dialog/apprequests?api_key=XXXXXXXXXX&app_id=XXXXXXXXXX&display=popup&frictionless=true&locale=en_US&message=XXXX&next=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D5%23cb%3Df2b013bbfaa712%26origin%3Dhttp%253A%252F%252Ffacebookapp.localhost%252Ff3267a4c771122%26domain%3Dfacebookapp.localhost%26relation%3Dopener%26frame%3Df3ad1f46b651196%26result%3D%2522xxRESULTTOKENxx%2522&sdk=joey
FBの内外でアプリを使用する際の違いは何だろうか、jsの問題があるかもしれません。
修繕
今日、私はもう一度試してみましたが、問題はなくなりました。また、ポップアップが閉じず、コールバック関数が呼び出されていない場合でも、招待状が送信されました。私のテストユーザーは、彼らがそれらを取得していることを確認するのを忘れていました... とにかく、謎のバグ、謎の修正。