Ionic 2如何在浏览器中运行时使InAppBrowser和其他插​​件工作

时间:2017-03-12 14:01:21

标签: api authentication ionic-framework ionic2

我正在Ionic 2中创建一个应用程序,它会消耗现有网站的网络API。要使用此API,我必须通过以下方式在其中进行athenticate(类似于facebook登录):

  • 我在InAppBrowser组件中调用api登录页面,发送正确的密钥和返回URL。
  • 用户在显示的表单中键入登录名和密码,API将验证并验证它。
  • API调用传递授权令牌的返回URL。
  • 我'劫持'这个重定向到InAppBrowser' loadstart'中的返回网址。事件,并提取并存储授权令牌。
  • 在以下对API的调用中,我在标题中发送授权令牌。

这在模拟器中运行良好,但它在浏览器中没有工作(使用离子服务器),因为当我调用InAppBrowser时,它实际上调用了window.open,并且事件不起作用。我无法检测到在打开的窗口中进行的重定向操作。

我希望在浏览器中完成这项工作,因为它可以更好地在那里调试应用程序。我的第一个想法是发送" http://localhost:8001"作为返回网址,但我找不到在离子应用程序中捕获令牌参数的方法。

有谁知道如何捕获此参数或任何其他方式使此登录在浏览器中工作?它仅用于开发和调试目的,因此严格的安全性不是问题(我可以在生产版本中注释掉任何不安全的代码)。

编辑:海登布拉克斯顿的回答没有解决我的问题,但由于这是因为我的应用程序专属的东西,它可以真正帮助想要使插件工作的人,我会保持它选定的答案。

除此之外,我会分享我找到的问题解决方案,以防它可以帮助任何人。实际上很简单:

  • 我通过" http://localhost:8001"作为api return_uri参数
  • api将在检查登录名和密码后重定向到http://localhost:8001?token=MY_AUTH_TOKEN
  • 这将重新加载应用程序并再次调用登录页面。
  • 在登录页面中,我致电this.platform.getQueryParam("token");获取令牌。

1 个答案:

答案 0 :(得分:1)

添加

"browser": "ionic-app-scripts serve --iscordovaserve --sourceMap source-map  --wwwDir platforms/browser/www/ --buildDir platforms/browser/www/build",

到package.json的脚本部分。然后运行

而不是做离子服务
npm run browser

我们使用ionic2来开发我工作的应用程序,这是我们经过一些研究后想出来的。

在使用之前,您需要添加浏览器平台。您可以通过以下方式完成此任务:

ionic add platform browser

如果已添加浏览器平台,请从您的平台目录中删除浏览器目录,然后运行add platform命令,只是为了安全起见。