Asynchronous FB.ui()在Safari中,当用户尚未登录时发出异步请求时出错
我试图让用户能够在我的外部网站上发布他们的Facebook墙 我在Safari遇到了一个问题。如果用户没有登录,也就是说,他们没有通过调用FB.login()的流程,那么在调用FB.ui()时会出现以下JS错误: TypeError:“undefined”不是对象(正在计算“b.fbCallID=a.id”) 但是,如果他们已登录,则该对话框将正常显示 在回调函数中调用FB.ui()——我从服务器检索一个唯一的url,然后调用FB.ui()。如果我直接调用FB.ui(),它可以正常工作,但当它是异步的时候就不行了 代码如下:Asynchronous FB.ui()在Safari中,当用户尚未登录时发出异步请求时出错,asynchronous,safari,facebook-javascript-sdk,Asynchronous,Safari,Facebook Javascript Sdk,我试图让用户能够在我的外部网站上发布他们的Facebook墙 我在Safari遇到了一个问题。如果用户没有登录,也就是说,他们没有通过调用FB.login()的流程,那么在调用FB.ui()时会出现以下JS错误: TypeError:“undefined”不是对象(正在计算“b.fbCallID=a.id”) 但是,如果他们已登录,则该对话框将正常显示 在回调函数中调用FB.ui()——我从服务器检索一个唯一的url,然后调用FB.ui()。如果我直接调用FB.ui(),它可以正常工作,但当它是
retrieveUrl(param1, param2, function(result) {
FB.ui({ method: 'feed',
description: 'My Description',
display: 'dialog',
link: result.uniqueUrl,
picture: 'http://foo.com/bar.jpg'
}, function(response) {
if (response && response.post_id) {
//Posted message
} else {
//Not posted message
}
});
});
无论是否处于登录状态,这都适用于其他浏览器 必须在Safari中的用户启动操作(单击)上调用FB.login或FB.ui方法,FB.UIServer才能呈现新窗口/弹出窗口/iframe 如果尝试在网络回调事件上调用这些方法,它将被阻止,并且将发生您描述的异常: TypeError:“undefined”不是对象(正在计算“b.fbCallID=a.id”)
您能否在用户与页面交互之前检索唯一的URL,然后在用户单击按钮时显示提要对话框?不,绝对不能。我需要我的服务器先生成一个唯一的代码。我只是做了重定向,而不是使用FB.ui(),所以没关系。也许页面可以生成唯一的代码?无聊的。转向别处!