使用Facebook Safari弹出窗口

时间:2015-06-24 16:21:44

标签: facebook-javascript-sdk facebook-php-sdk

我为一些我配置了Radius服务器的路由器构建了一个强制网络门户,所以当客户尝试登录时,他们会遇到登录屏幕(想想麦当劳的情况)... Facebook是其中之一登录的选项。

这一切都适用于Google Chrome,问题出在Safari上。

Mac或iPhone上的Safari我已经学会尝试到达http://www.apple.com/library/test/success.html如果它没有返回“成功”这个词,那么Apple / Safari会知道这是一个强制性的门户网站情况所以试图通过弹出来帮助一个(Safari)窗口,您可以登录。

我的问题是Facebook有一些自己的弹出窗口,这些在Safari的弹出窗口中无效(它们通过Safari的主浏览器工作):

  1. 如果您尚未登录,Facebook将弹出登录Facebook窗口。
  2. 如果您使用Facebook登录,但该应用程序未获得授权,则会显示一个弹出窗口,要求您单击“确定”并检查授权权限。
  3. 我已经克服了第1点,而是将用户重定向到可以返回我的网站的Facebook登录窗口,但我没有克服第2点。

    以下是我克服第1点的方法。

    FB.getLoginStatus(function(response) {
      //statusChangeCallback(response);
      var uri = encodeURI('MY WEBSITE');
        if (response.status === 'connected') {
            location.reload();
        } else if(response.status === 'unknown') {
            window.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=1543071895971445&redirect_uri="+uri+"&response_type=token");
        } else {
            //can't avoid the Facebook 'authorise app' popup that doesn't work on Apple captive portal popup.
            FBSignup();
        }
    

    在上面的else语句中,FBSignup()调用FB.login函数调出授权弹出窗口。

    有没有办法通过向用户提供一种在没有弹出窗口的情况下授权应用程序的方法来克服第2点?如果有什么可以帮助的话,我也在使用Facebook PHP SDK?

    另外接受的答案是帮助我解决为什么我的Facebook弹出窗口无法在苹果提出的强制门户助手中工作。

1 个答案:

答案 0 :(得分:0)

我通过使用PHP v5.0 SDK来解决这个问题,而不是生成一个Facebook URL来重定向用户,这不会带来任何弹出窗口,因此Apple俘获门户友好。您也可以通过此重定向请求权限,具体方法如下。

body.ks4 .menu{
    background-image:none !important;
}