我有一个使用 jQuery Mobile 构建的移动网站。我经常在 iPhone 上以全屏/移动网络应用程序模式运行它(我已将网络应用程序添加到我的 iPhone 主屏幕)。
在其中一个页面上,用户需要使用 Facebook Connect JavaScript API 登录 Facebook。如果用户尚未登录,则可以通过单击登录按钮来完成。该按钮的事件处理程序如下所示:
("#fbLogin").click(function () {
FB.login(handleStatusChange(response),
{ scope: "publish_stream",
connect_display: "touch" });
});
在上面的代码中,我插入了一些换行符以提高可读性,但值与示例中类似。回调函数 (handleStatusChange) 负责处理登录请求的响应。
当我单击此按钮时,Facebook 登录页面将在我的网络应用程序窗口中打开。如果我尚未接受 Facebook 应用程序,我还必须授予它权限。这一切似乎运作良好。但是在我授予权限/登录后,我的屏幕完全空白。
我还尝试了另一种登录方法,将其放入登录按钮事件处理程序中:
window.location = "https://www.facebook.com/login.php
?api_key=MY_API_KEY
&cancel_url=http%3A%2F%2Fwww.mywebsiteurl.com%3A8081
&fbconnect=1
&next=http%3A%2F%2Fwww.mywebsiteurl.com%3A8081
&return_session=1
&session_version=3
&v=1.0
&req_perms=publish_stream
&connect_display=touch";
再次插入换行符以提高可读性。使用时它只是一根长绳。
cancel_url 和 next 参数中使用的 URL 是我在 Facebook 应用程序中注册的 URL。如果我尝试使用不同的 URL(例如 http://www.google.com ),我会收到错误,因此这似乎是正确的。正如您所看到的,我在开发服务器上使用了不同的端口(端口 8081)。这会是一个问题吗?
结果与前面的示例类似。我得到了登录/权限页面,但一切完成后我留下了一个空白屏幕。我在reading this post on the old Facebook Developer forum之后尝试过这个.
另一方面,如果我尝试在 Safari 中运行它(而不是作为全页 iPhone Web 应用程序),登录效果会很好。
还有什么我可以尝试的吗?有人在 iPhone 上以全屏/网络应用程序模式运行时可以使用 JavaScript API Facebook Connect 登录吗?
提前致谢!
最佳答案
不确定这是否对您有帮助,但我发现添加 iOS Safari 链接修复后,还允许 Facebook 登录在我的全屏 Web 应用程序中工作,而无需打开“常规”Safari 中的页面:
// Make links work in iOS fullscreen web app
function disableSafariLinks() {
$("a").click(function (event) {
event.preventDefault();
window.location = $(this).attr("href");
});
}
关于iphone - 使用 Facebook Connect 登录后如何返回 iPhone Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604960/