登录Facebook Connect后如何返回iPhone网络应用程序?

时间:2011-12-22 14:00:44

标签: iphone web-applications mobile-website facebook-javascript-sdk facebook-login

我有一个使用jQuery Mobile构建的移动网站。我经常在iPhone上以全屏/移动网络应用程序模式运行它(我已将网络应用程序添加到我的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 参数中使用的网址是我在Facebook应用中注册的网址。如果我尝试使用其他网址(例如http://www.google.com),我会收到错误,因此这似乎是正确的。如您所见,我在开发服务器(端口8081)上使用了不同的端口。这可能是个问题吗?

结果与前面的例子类似。我得到了登录/权限页面,但在完成所有操作后我都会留下一个空白屏幕。我在reading this post on the old Facebook Developer forum之后尝试了这个。

另一方面,如果我尝试在Safari(不是整页iPhone网络应用程序)中运行此程序,则登录效果很好。

还有什么我可以尝试的吗?在iPhone上以全屏/网络应用模式运行时,是否有人使用JavaScript API Facebook Connect登录?

提前致谢!

1 个答案:

答案 0 :(得分:1)

不确定这是否对您有所帮助,但我发现添加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 Safari Web App opens links in new window