15

我正在制作一个iOS Webapp(即一个以独立模式运行的HTML页面-没有Safari chrome-当页面的书签添加到主屏幕时)。

我有一个 onclick 调用 FB.login() 的按钮。在独立模式下,webapp 重定向到 facebook 登录页面(如预期的那样),但是之后,我卡在白屏上(我没有被要求进行身份验证,因为我已经拥有了,但我想身份验证屏幕会发生在白屏之前)并且不要放回webapp。

Safari 应用程序中的相同流程按预期工作。单击登录会调用 FB.login(),它会打开一个新页面,要求您登录 Facebook,一旦您登录并验证应用程序,该页面将关闭,您将返回原始页面。

似乎在独立模式下,“第二页”出现问题,FB 登录关闭并重定向回应用程序(它没有)。并且流程被打破了。

有什么解决方法吗?

谢谢,
-Esa

4

2 回答 2

9

您可以尝试以下解决方法。它对我有用。在移动设备中,它重定向到客户端身份验证 url。

var isMobile = false;
try {
    isMobile = (window.location.href == top.location.href && window.location.href.indexOf("/mobile/") != -1);
} catch (e) {}
if (!isMobile) {
    FB.login();
} else {
    var permissionUrl = "https://m.facebook.com/dialog/oauth?client_id=" + appId + "&response_type=code&redirect_uri=" + redirectPage + "&scope=" + permissions;
    window.location = permissionUrl;
    return;
}
于 2012-06-27T17:15:23.967 回答
8

我使用以下内容来检测我是否处于主屏幕模式并相应地做正确的事情:

if ("standalone" in navigator && navigator.standalone) {
  var permissionUrl = "https://m.facebook.com/dialog/oauth?client_id=" + appId + "&response_type=code&redirect_uri=" + window.location + "&scope=" + app_permissions;
  window.location = permissionUrl;
} else {
  FB.login(
    function(response) {
      ...
    },
    {scope: app_permissions}
  );
}
于 2013-02-15T20:46:14.977 回答