2017-02-18 42 views
0

我有一個網站,我剛剛從Google AppEngine身份驗證轉移到OAuth。我第一次登錄我的iPhone我被通知的OAuth在UIWebViews中會停止對4月20日將iOS應用中的Google OAuth保存到主屏幕

https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

我就遇到了這個,因爲我已經保存了一個快捷方式到我的網站我iOS主屏幕。我如何解決這個問題?我想我可以讓登錄按鈕爲OAuth身份驗證流程打開一個新窗口,然後在身份驗證完成後關閉新窗口。但是,對於用戶保存到主屏幕的應用程序,並且檢測用戶是否在UIWebView中(以便我可以確定是否要打開一個新窗口),似乎有些不可靠,這可能是不可靠的因爲我試圖匹配Google使用的檢測結果。

有沒有人有經驗或指導分享如何使這種用戶體驗可以接受?

回答

0

Google和Apple強制執行的限制措施阻止了這個問題的簡單或優雅的解決方案。 Google不會允許您在「沙盒」瀏覽器中使用他們的OAuth服務。而且iPhone上的「沙盒」瀏覽器不會與非沙盒瀏覽器共享任何數據(例如cookie或localStorage)。因此,如果您打開一個新窗口來完成OAuth交換,則無法通知完成交換並將用戶標識傳回「沙盒」瀏覽器會話。

我發現這個問題的唯一解決方案類似於Roku註冊過程:允許用戶在當前登錄的瀏覽器中生成一次性代碼,然後將該一次性代碼輸入到'沙箱'瀏覽器。我選擇使用有效時間爲2分鐘的6位代碼,並添加了一些額外的邏輯以確保代碼由同一個人生成和使用。

這可行,但用戶體驗不如標準OAuth流程。而且我瞭解Google從「沙盒」瀏覽器限制OAuth的原因。但它阻礙了漸進式的網絡應用程序,迫使用戶通過額外的箍環來使用他們保存在主屏幕上的PWA。

相關問題