我正在Ionic框架上执行登录页面,我首先需要知道该用户是否存在于我的数据库中,其次要知道该用户是否具有来自webex api的访问令牌,那么问题就出在该用户没有访问令牌时我必须显示来自webex服务的webview,然后用户必须进行登录,并且我必须捕获由webex生成的代码,然后通过api获取accesstoken,之后,我必须将用户重定向到另一个页面。
用户登录webex后,我已经能够获取访问令牌,问题是当我尝试导航至成功路线时,得到:
“导航在Angular区域之外触发,您是否忘了调用'ngZone.run()'?”
使用此功能,我可以从webex网址获取代码:
getWebexAccess( response: any ){
this.showLoading = false;
if(response.data.hasOwnProperty("URL")){
let browserRef = this.inAppBrowser.create(response.data.URL, '_blank', 'location=no');
browserRef.on("loadstop").subscribe((event)=>{
if ((event.url).indexOf('?code=') !== -1) {
try{
let urlCode = event.url.slice(event.url.indexOf('?code=') + '?code='.length);
let chunkCode = urlCode.split("&");
let code = chunkCode[0] + '&email=' + this.user.email + '&' + chunkCode[1];
this.getAccessToken( code );
browserRef.close();
}catch( error ){
console.log( error );
}
}
})
}
}
之后,我调用getAccessToken
getAccessToken( code: string ){
this.apiChat.getAccessToken( code ).subscribe( (response: any) => {
if(response.status === 200){
this.ngZone.run(() => this.router.navigate(["/chat"])).then();
}
}, (errorResponse: any) => {
console.log( errorResponse );
});
}
如果我将代码保留为this.ngZone.run(),则控制台将返回错误,但是如果我将代码保留为this.ngZone.run(),则控制台将不会显示错误,但导航不会要么工作
这是我的问题,登录成功后我无法导航到聊天页面。非常感谢您的帮助。