簡體   English   中英

通過強制門戶在iOS設備上登錄Facebook

[英]Facebook login on iOS devices via captive portal

我正在開發一個強制門戶實施,它將使用Facebook來驗證用戶身份。 用戶將必須能夠登錄Facebook以進行身份​​驗證並免費訪問Internet。 除非用戶進行身份驗證,否則他們必須不能自由瀏覽Facebook(或任何其他網站)。 我正在使用javascript SDK。

我在iOS設備上遇到這種麻煩。 連接到ssid時,iOS設備將啟動沒有cookie和會話的偽瀏覽器。 用戶可以在此頁面上單擊“通過Facebook連接”。 這將彈出oauth登錄對話框。 以下是實現此目的的代碼段:document.location =“ https://www.facebook.com/dialog/oauth?client_id= ” + WF_FB_APP_ID +“&response_type = token&scope = public_profile,電子郵件,user_birthday&redirect_uri =” + document.location.href);

當用戶輸入電子郵件和密碼時,facebook會返回一些錯誤代碼:200,錯誤描述“權限錯誤”和錯誤原因“用戶被拒絕”,而不是對用戶進行身份驗證,並重定向到要求用戶再次輸入憑據的safari。 此時,輸入相同的憑據可以正常工作,並且用戶可以訪問Internet。

我想知道為什么第一次沒有這種信譽,為什么要重定向到野生動物園。 Andriod和Windows設備不存在此問題,因為要求用戶打開瀏覽器,並且通過Facebook登錄的過程在瀏覽器中工作正常。

有什么建議可以嘗試嗎? 我在雲中使用Meraki AP,並將所有可能的facebook域名都放在了圍牆的花園入口中。 我曾嘗試使用谷歌搜索這種情況,但無濟於事。 任何幫助或建議嘗試將不勝感激。

我意識到這是一個舊線程,但是我們遇到了潛在的相同問題。 Facebook登錄對話框將出現在強制門戶窗口中,但是一旦您單擊登錄,強制門戶窗口將關閉,facebook在普通瀏覽器中打開,提示再次登錄。

經過好幾個小時的梳理,我才算出實際發生的情況。 我們使用運行openwrt的openmesh AP。 這些設備動態地將圍牆花園配置中的域的ip地址添加到iptables中,作為對這些域的請求。 我還沒有完全了解它的內容,但是列入白名單的某些CDN網絡域似乎允許訪問iOS所使用的域的IP地址以進行Internet檢查訪問。

一旦我從圍牆花園列表中刪除了對akamaiedge.net,akamai.net,akamaitechnologies.com和cdnjs.cloudflare.com的引用,一切正常。 完整的端到端Facebook登錄和重定向回到我們的登錄頁面仍保留在強制門戶內。

實際上,我們在android以及任何引用gstatic.com域的內容中都發現了相同的問題。 Android使用Connectivitycheck.gstatic.com,如果您將諸如maps.gstatic.com或fonts.gstatic.com之類的白名單列入白名單,則Android強制門戶會在您的目標網頁加載之前自動關閉。

就像我說的,很高興這是一個老話題,但是認為這可能對其他人在這里有用。

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM