Facebook通过强制门户在iOS设备上login

我正在开发一个强制性的门户实施,将使用Facebook来validation用户。 用户必须能够login到Facebook获得authentication,并自由访问互联网。 除非用户进行身份validation,否则他们不能自由浏览Facebook(或任何其他网站)。 我正在使用JavaScript的SDK。

我在iOS设备上遇到了这个问题。 iOS设备连接到ssid时会显示没有Cookie和会话的伪浏览器。 在这个页面上,用户可以点击“通过Facebook连接”。 这将启动oauthlogin对话框。 document.location =“ https://www.facebook.com/dialog/oauth?client_id= ”+ WF_FB_APP_ID +“&response_type = token&scope = public_profile,email,user_birthday&redirect_uri =”+ encodeURIComponent( document.location.href);

当用户input电子邮件和密码,而不是authentication用户,Facebook返回一些错误代码:200,错误描述“权限错误”和错误原因“用户拒绝”,并redirect到Safari用户需要再次input凭据。 在这一点上,input相同的凭据工作正常,用户可以访问互联网。

我想知道为什么信誉不是第一次工作,为什么有重新导向到safari。 Andriod和Windows设备没有这个问题,因为用户需要打开浏览器,并通过Facebook的login过程在浏览器中正常工作。

有什么build议,我可以尝试? 我在云中使用Meraki AP,并将所有可能的facebook域名放入围墙花园入口。 我试图用Googlesearch这个场景,但没有用。 任何帮助或build议尝试将不胜感激。

我意识到这是一个古老的线索,但我们遇到了可能相同的问题。 Facebook的login对话框会出现在俘虏门户窗口中,但只要你login,俘虏门户窗口closures,并在正常的浏览器中打开Facebook提示重新login。

经过好几个小时的甩头,我弄清楚了究竟发生了什么。 我们使用运行openwrt的openmesh AP。 这些设备dynamic地将围墙花园configuration中的域的IP地址添加到iptables中,作为对这些域所做的请求。 我还没有完全了解它的底部,但是一些白名单中的CDNnetworking域似乎允许访问iOS使用的域来检查互联网的IP地址。

一旦我从我的围墙花园列表中删除对akamaiedge.net,akamai.net,akamaitechnologies.com和cdnjs.cloudflare.com的引用,一切正常。 完整的端到端Facebooklogin和redirect回到我们的着陆页仍然在强制门户内。

我们实际上在android上发现了同样的问题,并且引用了gstatic.com域。 Android使用connectivitycheck.gstatic.com,如果您列出像maps.gstatic.com或fonts.gstatic.com之类的任何东西,则在您的着陆页加载之前,android强制门户自动closures。

正如我所说,欣赏这是一个古老的线索,但认为这可能有助于其他人在这里find自己。

干杯