Facebook通过专属门户在iOS设备上登录



我正在开发一个捕获门户实现,该实现将使用facebook对用户进行身份验证。用户必须能够登录脸书才能获得身份验证并免费访问互联网。除非用户进行身份验证,否则他们不能自由浏览facebook(或任何其他网站)。我使用的是javascript sdk。

我在iOS设备上遇到了此流的问题。iOS设备在连接到ssid时会显示没有cookie和会话的伪浏览器。在这个页面上,用户可以点击"通过Facebook连接"。这将打开oauth登录对话框。以下是如何实现这一点的代码片段:document.location="https://www.facebook.com/dialog/oauth?client_id="+WF_FB_APP_ID+"&response_type=令牌&scope=公共_profile,电子邮件,user_birthday&redirect_uri="+encodeURIComponent(document.location.href);

当用户输入电子邮件和密码时,facebook不会对用户进行身份验证,而是返回一些错误代码:200,错误描述"权限错误"和错误原因"用户被拒绝",并重定向到safari,要求用户再次输入凭据。此时,输入相同的凭据效果良好,用户可以访问互联网。

我想知道为什么这些信条第一次不起作用,为什么会重定向到狩猎。Andriod和windows设备没有这个问题,因为用户需要打开浏览器,通过facebook登录的过程在浏览器中运行良好。

有什么建议我可以试试吗?我在云中使用Meraki AP,并已将所有可能的facebook域放在围墙花园入口中。我试过在谷歌上搜索这个场景,但没有成功。如有任何帮助或建议,我们将不胜感激。

我意识到这是一个旧线程,但我们只是遇到了潜在的相同问题。facebook登录对话框会出现在专属门户窗口中,但一旦你点击登录,专属门户窗口就会关闭,facebook会在正常浏览器中打开,提示再次登录。

在撕了好几个小时的头发之后,我弄清楚了到底发生了什么。我们使用运行openwrt的openmesh AP。这些设备动态地将围墙花园配置中的域的ip地址添加到iptables中,作为对这些域的请求。我还没有完全弄清楚,但一些CDN网络域在被列入白名单时,似乎允许访问iOS使用的域的IP地址以进行互联网检查访问。

当我从我的围墙花园列表中删除了对akamaiedge.net、akamai.net、akamaitetechnologies.com和cdnjs.cloudflare.com的引用后,一切都很好。完整的端到端facebook登录和重定向回我们的登录页面仍在专属门户内。

实际上,我们在android和任何引用gstatic.com域的东西上都发现了同样的问题。安卓使用connectivitycheck.gstatic.com,如果你将maps.gstatic.com或fonts.gstaticcom等内容列入白名单,安卓专属门户会在你的登录页加载之前自动关闭。

正如我所说,很感激这是一条古老的线索,但我认为这可能会对其他人发现自己在这里有所帮助。

干杯

最新更新