ios - 通过强制门户在 iOS 设备上登录 Facebook

标签 ios facebook authentication captivenetwork

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

我在 iOS 设备上遇到了这个流程的问题。 iOS 设备在连接到 ssid 时会弹出没有 cookie 和 session 的伪浏览器。在此页面上,用户可以单击“通过 Facebook 连接”。这将打开 oauth 登录对话框。以下是如何实现的代码片段:
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);

当用户输入电子邮件和密码,而不是验证用户身份时,facebook 返回一些错误代码:200,错误描述“权限错误”和错误原因“用户被拒绝”,并重定向到用户需要再次输入凭据的 safari。此时,输入相同的凭据可以正常工作,并且用户可以访问 Internet。

我想知道为什么信用第一次不起作用以及为什么重定向到 safari。 Andriod 和 windows 设备没有这个问题,因为用户需要打开浏览器并且通过 facebook 登录过程在浏览器中可以正常工作。

有什么我可以尝试的建议吗?我在云中使用 Meraki AP,并将所有可能的 facebook 域放在围墙花园条目中。我试过用谷歌搜索这种情况,但无济于事。任何尝试的帮助或建议将不胜感激。

最佳答案

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

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

一旦我从围墙花园列表中删除了对 akamaiedge.net、akamai.net、akamaitechnologies.com 和 cdnjs.cloudflare.com 的引用,一切正常。完整的端到端 Facebook 登录和重定向回我们的登录页面仍保留在强制门户中。

我们实际上在 android 和任何引用 gstatic.com 域的东西上发现了同样的问题。 Android 使用connectivitycheck.gstatic.com,如果您将maps.gstatic.com 或fonts.gstatic.com 之类的内容列入白名单,则android 强制门户会在您的登录页面加载之前自动关闭。

正如我所说,感谢这是一个旧线程,但认为这可能有助于其他人在这里找到自己。

干杯

关于ios - 通过强制门户在 iOS 设备上登录 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29631522/

相关文章:

android - 无法将没有 CSS 节点的子节点添加到没有测量功能的节点

ios - 更改字体属性后如何使用 NSMutableAttributedString 保持 UITextview 的位置

ios - NSFetchedResultsController 时间过滤谓词建议

android - 如何通过 ContactsContracts API 从用户那里获取 facebook id?

安卓和 Facebook : How to get picture of logged in User

git - 操作系统 : git: remote: Permission to user/repo denied to otheruser

ios - 无法使用 AlamoFire 和 SwiftyJSON 解析 JSON

ios - 使用 iTunes 查找尚未在商店中的应用程序

php - Login fromAndroid : Api Key or Session Variables , 哪个更好。?

unix - Pam 身份验证,先尝试本地用户,然后尝试 LDAP