![](/img/trans.png)
[英]How do I get Facebook to return to my app after login if using phonegap plain on iPhone?
[英]How do I get back to the iPhone web app after having logged in with Facebook Connect?
我有一个使用jQuery Mobile构建的移动网站。 我经常在iPhone上以全屏/移动Web应用程序模式运行它(我已将Web应用程序添加到iPhone主屏幕中)。
在页面之一上,要求用户使用Facebook Connect JavaScript API登录到Facebook。 如果用户尚未登录,则可以通过单击登录按钮来完成。 该按钮的事件处理程序如下所示:
("#fbLogin").click(function () {
FB.login(handleStatusChange(response),
{ scope: "publish_stream",
connect_display: "touch" });
});
在上面的代码中,我插入了一些换行符以提高可读性,但是值类似于示例中的内容。 回调函数(handleStatusChange)处理来自登录请求的响应。
单击此按钮后,将在我的Web应用程序窗口中打开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)。 这可能是个问题吗?
结果类似于前面的示例。 我得到了登录/权限页面,但完成所有操作后,我的屏幕空白。 在阅读旧版Facebook开发者论坛上的这篇文章后,我尝试了此操作。
另一方面,如果我尝试在Safari(不是作为整页iPhone Web应用程序)中运行它,则登录效果很好。
还有什么我可以尝试的吗? 在iPhone上以全屏/ Web应用程序模式运行时,是否有人可以使用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");
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.