2017-02-20 37 views
14

我試圖讓Auth0在瀏覽器中使用Auth0在Ionic2給出回調

離子運行瀏覽器

我遵循了Auth0導遊工作未捕獲找不到中繼幀。我使用

auth0-7.6.1.min.js

鎖定/ 10.10.2/lock.min.js

版本。導航到谷歌登錄頁面發生,但回調失敗,白色的空白屏幕。通過回電我的意思是加載

https://n00b.au.auth0.com/login/callback?state=blahblahblah ...

網址。它加載一個白色的HTML的JavaScript拋出exeption

在這幾行代碼

 onOpen: function(cb) { 
     var o = "*"; 
     var msgTarget = isIE ? findRelay() : window.opener; 
     if (!msgTarget) throw "can't find relay frame"; 

顯然未捕獲找不到中繼幀

全球window.opener財產被預期存在。 知道整個URL由Auth0服務,我找不到找出錯誤的方法。

我檢查了Auth0中的日誌,從他們的角度來看它都是綠色的,並顯示登錄成功。

任何想法爲什麼這是失敗?

更新:在iPhone和iOS模擬器上測試,兩者都只顯示空白屏幕。下載示例Auth0項目並且沒有任何修改就有此問題。我的猜測是它與Cordova的InApp Browser插件打開在新的Safari瀏覽器窗口中打開登錄頁面有關

+0

只是想確保你知道window.opener是使用window.open(url)導航到頁面時自動設置的,對吧?見https://developer.mozilla.org/en-US/docs/Web/API/Window/opener – corolla

回答

1

我目前遇到了在Safari瀏覽器中打開註冊鏈接的問題,而不是在InAppBrowser 。這可能會打破回調,因爲它會讓你完全切換到Safari。

所以註冊鏈接在InAppBrowser打開我做了有一個臨時的解決方法,請參閱=>App rejected by Apple because Auth0 signUpLink doesn’t open in Cordova InAppBrowser but in system browser (Safari)

也許你可以將此到您的登錄鏈接,讓他們在InAppBrowser開爲好。

+0

我會試試看看它是否有幫助 – n00b

1

只是想確保你知道window.opener是使用window.open(url)導航到頁面時自動設置的。

看評論後http://developer.mozilla.org/en-US/docs/Web/API/Window/opener

更新:

嘗試<script>window.orgopen = window.open;</script>上述離子庫。開始auth0登錄流程之前,請

window.ionicopen = window.open; 
window.open = window.orgopen; 

復位算賬:window.open = window.ionicopen;

如果僅僅是一種破解,那麼至少可以從等式中得出一個未知數。

+0

我沒有在這裏使用window.open。我使用了Auth0的一個名爲Lock的庫,它有一個lock.show函數。你說得對,雖然他們有可能在正確的地方打開這個問題 – n00b

+0

@ n00b,gotcha。假設Auth0使用window.open,它可能是Ionic重寫window.open,並且在這個過程中導致opener不被設置。東西像http://stackoverflow.com/q/38212479/495244和https://forum.ionicframework.com/t/open-all-links-in-app-browser/66442/4似乎表明這種東西。請注意location.reload()顯然是如何將window.open返回給原始的。可以在加載離子庫之前在腳本博客中抓取原始的window.open方法,然後在調用auth0登錄之前將其重置。 – corolla

+0

我試過這樣做,但沒有任何成功。實際上,在離子腳本加載後,window.open保持不變:function open(){[native code]} – n00b