我正在尝试使用
让Auth0在浏览器中工作离子运行浏览器
我遵循了Auth0的指南。我正在使用
auth0-7.6.1.min.js
锁定/ 10.10.2 / lock.min.js
版本。导航到谷歌登录页面,但回调失败,空白屏幕。通过回电我的意思是加载
https://n00b.au.auth0.com/login/callback?state=blahblahblah ...
网址。它使用引发exeption的JavaScript加载白色html
没有找到中继帧
在这些代码行中
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 :(得分:1)
我目前遇到的问题是在safari浏览器中打开注册链接而不是在InAppBrowser中打开注册链接。这可能会打破回调,因为它会让你完全将应用程序切换到Safari。
我做了一个临时解决方法,因此在InAppBrowser中打开了注册链接,请参阅=> App rejected by Apple because Auth0 signUpLink doesn’t open in Cordova InAppBrowser but in system browser (Safari)
您可以将此应用于您的登录链接,以便在InAppBrowser中打开它们。
答案 1 :(得分:1)
只是想确保您知道使用window.open(url)导航到该页面时会自动设置window.opener。
请参阅http://developer.mozilla.org/en-US/docs/Web/API/Window/opener
评论后更新:
尝试使用离子库上方的new (std::addressof(u.value)) T
。在开始auth0登录流程之前,请执行
<script>window.orgopen = window.open;</script>
之后重置:window.ionicopen = window.open;
window.open = window.orgopen;
;
如果只是一个黑客攻击,这至少可以从一个未知的方程式。