2016-04-27 43 views
1

如果與Angular或其他JavaScript框架集成,Google Identity Toolkit工作流會產生問題。GITK與Angular 2在使用片段的重定向方面存在問題(#hash)

Angular使用URL片段(#)在視圖間導航。也可以使用HTML5風格進行導航並避免使用散列,但不幸的是Angular 2在正確處理碎片時存在問題,https://github.com/angular/angular/issues/6595

因爲URL片段內部使用的角度和類似的框架是防止GITK在某些情況下正常工作:

期間,如果用戶成功通過第三方授權唱歌,在服務用戶的登錄流程被重定向回GITK小部件頁面。

重定向URL將包含一個狀態參數。在Twitter或Facebook的情況下,狀態參數作爲查詢參數添加到URL(例如... login /?state = AFD_5tlxzU ...)。然而,其他服務(如Google帳戶)正在將狀態參數片段添加到重定向URL(例如... login /#state = AFD_5tlxzU ...)。

由於Angular使用URL片段進行瀏覽,重定向URL的狀態片段(例如... login /#state = AFD_5tlxzU ...)被框架刪除,阻止GITK小部件成功完成身份驗證。

是否有任何選項指示Google帳戶或GITK使用查詢參數而不是片段?此外,我想知道什麼是使用片段而不是查詢參數的重定向URL的理性?

回答

1

我正在回答我的自我。

解決問題的一種方法,如here所述,是將角度邏輯移動到Angular路由路徑之外。

例如通過創建一個單獨的靜態.html文件,只負責唱歌。另一種解決方案是使用ng2-ui-router。

+1

只是想知道你是如何解決在ng2 ui路由器? –