2017-02-20 14 views
14

tôi đang cố gắng để có được Auth0 làm việc trong trình duyệt sử dụngAuth0 trong Ionic2 cho frame relay không thể tìm thấy của router trong callback

ion trình duyệt chạy

Tôi đã theo các hướng dẫn từ Auth0. Tôi đang sử dụng

auth0-7.6.1.min.js

khóa/10.10.2/lock.min.js

phiên bản. điều hướng đến trang đăng nhập Google xảy ra, nhưng cuộc gọi lại không thành công với màn hình trắng trống. bằng cách gọi lại tôi có nghĩa là tải các url

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

. mà tải một html trắng với JavaScript ném exeption

của router không thể tìm thấy frame relay

trong những dòng mã

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

rõ một tài sản window.opener toàn cầu được dự kiến tồn tại. biết rằng toàn bộ URL này được cung cấp bởi Auth0, tôi không thể tìm ra cách để tìm ra điều gì sai.

Tôi đã kiểm tra nhật ký trong Auth0 và tất cả đều có màu xanh lục từ quan điểm của họ và hiển thị thông tin đăng nhập thành công.

Bất kỳ ý tưởng nào tại sao điều này không thành công?

CẬP NHẬT: được thử nghiệm trên Trình giả lập iPhone và iOS và cả hai chỉ hiển thị màn hình trắng trống. Đã tải xuống dự án mẫu Auth0 và có vấn đề này mà không có bất kỳ sửa đổi nào. Tôi đoán là nó có liên quan đến plugin InApp Browser của Cordova, mở trang đăng nhập trong cửa sổ Safari mới

+0

Chỉ muốn đảm bảo bạn biết window.opener được đặt tự động khi bạn điều hướng đến trang bằng window.open (url), phải không? Xem https://developer.mozilla.org/en-US/docs/Web/API/Window/opener – corolla

Trả lời

1

Tôi hiện đang gặp sự cố với khóa mở liên kết đăng ký trong trình duyệt Safari thay vì trong InAppBrowser . Đây có thể là thứ phá vỡ gọi lại vì nó làm cho bạn hoàn toàn chuyển ứng dụng sang Safari.

tôi đã thực hiện có một cách giải quyết tạm thời để vào liên kết đăng ký mở ra trong InAppBrowser, xem =>App rejected by Apple because Auth0 signUpLink doesn’t open in Cordova InAppBrowser but in system browser (Safari)

Bạn có thể có thể áp dụng điều này để liên kết đăng nhập của bạn để họ có mở trong InAppBrowser là tốt.

+0

Tôi sẽ thử cách này để xem nó có giúp ích cho – n00b

1

Chỉ muốn đảm bảo bạn biết window.opener được đặt tự động khi bạn điều hướng đến trang bằng window.open (url).

Xem http://developer.mozilla.org/en-US/docs/Web/API/Window/opener

Cập nhật sau khi nhận xét:

Hãy thử <script>window.orgopen = window.open;</script> trên lib ion.Trước khi bắt đầu luồng đăng nhập auth0, hãy thực hiện

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

Đặt lại sau: window.open = window.ionicopen;

Nếu chỉ là hack, điều này có thể ít nhất là không biết phương trình.

+0

Tôi không sử dụng window.open tại đây hay không. Tôi sử dụng một thư viện của Auth0 gọi là Lock có chức năng lock.show. Bạn có quyền mặc dù có lẽ họ có một số vấn đề mở này ở đúng nơi – n00b

+0

@ n00b, gotcha. Giả sử window.open được sử dụng bởi Auth0, nó có thể là Ionic là ghi đè window.open, và trong quá trình gây ra opener không được thiết lập. Các nội dung như http://stackoverflow.com/q/38212479/495244 và https://forum.ionicframework.com/t/open-all-links-in-app-browser/66442/4 dường như chỉ ra điều gì đó thuộc loại này . Lưu ý cách location.reload() có vẻ trả về window.open về bản gốc. Có thể bạn có thể lấy phương thức window.open ban đầu trong blog kịch bản trước khi tải lib ion và sau đó đặt lại trước khi cuộc gọi để đăng nhập auth0. – corolla

+0

Tôi đã thử làm điều này, nhưng không thành công. Trên thực tế window.open đã giữ nguyên sau khi tải scrip Ionic: function open() {[native code]} – n00b

Các vấn đề liên quan