iphone - 使用 Facebook Connect 登录后如何返回 iPhone Web 应用程序?

标签 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) 负责处理登录请求的响应。

当我单击此按钮时,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_urlnext 参数中使用的 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 Safari Web App opens links in new window

关于iphone - 使用 Facebook Connect 登录后如何返回 iPhone Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604960/

相关文章:

ios - 如何在 Storyboard中为新场景连接 Controller 文件

iphone - 正确使用@private变量/属性

web-applications - 网站和网络应用程序有什么区别?

c# - 如何使用 Google+ API 将人员添加到 Google+ 中的圈子?

php - 使用标准浏览器(不是通过手机)使用移动宽带上传文件

ios - 如何在 iPhone 的手势识别器中获取原始附加 View ?

iphone - 解密md5 iphone

c# - 是否可以在 C# ASP.NET Web 应用程序中执行此操作?

css - 什么是跨浏览器、跨平台的网络安全字体?

css - 弹出软键盘时文本大小会发生变化