初始化代码:
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>
弹出窗口也不会' t 关闭或将请求发送给选定的朋友。
奇怪的是,几周前这还有效,您可以选择一些朋友并向他们发送邀请,然后弹出窗口就会关闭。
我的应用程序在 localhost 中运行,处于沙盒模式,并且我尝试过邀请其他应用程序的管理员、测试用户、普通用户等。过去它曾经可以工作。
现在可能发生什么?
我检查过的类似问题:
- FB.ui 弹出窗口没有关闭
- Facebook 应用程序请求对话框未发送请求
- http://facebook.stackoverflow.com/questions/4646441/how-to-close-a-facebook-sdk-dialog-opened-with-fb-ui
提前致谢!
更新
我添加了一个使用 method:feed 而不是 method:apprequests 的测试方法
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问题。
固定的
今天我再次尝试,问题消失了。即使弹出窗口没有关闭并且没有调用回调函数,也会发送邀请。我的测试用户忘记检查他们是否得到它们......无论如何,神秘的错误,神秘的修复。