我正在尝试在Facebook Canvas页面上使用FB.ui oauth popup。我正在使用最新的Javascript SDK。
在页面选项卡上,它可以很好地执行:FB.ui({method: 'oauth'}, callback);
这为我提供了允许访问弹出窗口,然后使用响应完美地调用我的回调。不需要重定向。
然而,当我在Canvas上尝试完全相同的事情时,我得到一个FB对话框,上面写着“发生错误。请稍后再试”。有没有人让它工作,或知道任何变通办法?
我确实使用top.location.href = "http://www.facebook.com/dialog/oauth?client_id=xxx&redirect_uri=xxx
方法取得了成功,但如果可能,我宁愿不必重定向。
答案 0 :(得分:5)
事实证明FB.login(回调)在画布页面上运行良好,并且它也避免了重定向。
所以我的答案就是改变FB.ui而不是做FB.login。发送给回调的响应与FB.ui略有不同,但非常接近。
FB.login(function(response) {
if(response && response.session) {
//do stuff with session
}
});
答案 1 :(得分:0)
“它不起作用”是什么意思?如果未响应用户事件(如鼠标单击)而调用弹出窗口,则可能会阻止弹出窗口。