14

我正在構建全屏iPhone優化的網絡應用。它像本機應用程序一樣從主頁啓動,並通過以下指令表現爲獨立應用程序,但它只是純HTML/CSS/JavaScript,不涉及PhoneGap。iPhone網絡應用中的OAuth回調

<meta name="apple-mobile web-app-capable" content="yes" /> 

當試圖在OAuth的,重定向到Twitter(或任何其他的OAuth提供商)身份驗證需要我出全屏的Web應用程序,進入移動Safari瀏覽器。一旦Twitter身份驗證完成,重定向回我的應用程序不會啓動我的主頁應用程序,而只是在Mobile Safari中重定向。是否有可能在iPhone主頁網絡應用程序內部執行OAuth?簡而言之,我可以通過OAuth回調重新啓動我的主頁Web應用程序嗎?

+0

只是想說有沒有辦法以編程方式重新啓動應用程序(也許你可以在越獄設備上,但不是在正常情況下) – mattacular

+0

只是爲了澄清。由於您正在構建Web應用程序,因此您已經在Mobile Safari中。你的意思是說認證頁面在Safari的新頁面中打開嗎? –

+2

當您將iPhone優化的Web應用程序保存到主頁並從中運行時,它實際上並未在Safari中打開。那麼,它仍然由Safari提供,但它像一個獨立的應用程序啓動。它在快速應用切換任務欄和一切中獲得它自己的圖標。問題是,Twitter的鏈接會離開該容器。 – mustpax

回答

14

我最近遇到過類似的問題,發現如果你在Javascript中設置URL爲window.location.href="http://example.com/whatever",那麼iOS不會切換到Safari。我設法讓PayPal結賬和Facebook登錄在獨立的網絡應用程序中工作,而無需使用此方法切換到Safari瀏覽器!如果您要提交表單,請通過JS執行此操作,然後從響應中獲取重定向網址,然後設置位置。至於回傳給你的應用程序,這取決於外部服務如何工作。

如果這樣做不好,您可以在切換到Safari之前彈出alert('You will be passed to Safari for authentication. Reload this app afterwards.')。不是很好,但比自動切換應用程序更令人驚訝!

+0

如果您要求特定的權限範圍(例如https://www.googleapis.com/auth/youtube),並且您有多個與您的登錄帳戶關聯的帳戶,Google OAuth仍然堅持從「選擇帳戶」屏幕切換到Safari。 – Dunc