2017-03-28 7 views
0

私はGoogle OAuth APIを使用してユーザーにサインアップし、ユーザーにアプリケーションをログインさせるプロジェクトに取り組んでいます。角度のGoogle OAuthリダイレクトがhtml5モードを有効にしていません

このプロジェクトはangularjsとasp.netに基づいています。 html5modeが有効でない場合

ログインプロセスが正常に動作しますが、SEO上の理由から、我々は、使用してURLからハッシュ(#)を削除するために必要とされています

$locationProvider.html5Mode(true); 

この場合には、認証後に受信した応答を我々は

$routeProvider.when('/access_token=:accessToken', { 
     templateUrl: '/app/identification/identification.html', 
     controller: 'identificationGoogle' 
}); 
を使用しているフォーム

http://site/#access_token=... 

に、角でルート設定のために常にあります

問題は、リダイレクトが行われた後にブラウザウィンドウのURLが以前の形式であっても、関連付けられたコントローラがアクティブにならないことです。

ページを更新するまでは機能しません。

ページを再読み込みする必要性を避けるため、この問題に対する解決策はありますか。

使用される角度バージョンは、1.3.15です。

+0

「html5Mode」の角が「#」タグのURLと一致しないため、レスポンスurlから '#'タグを削除する必要があると思います。 –

+0

はい私は、リフレッシュボタンを使用してページを再読み込みした後、自動的にURLが(/ access_token ...)になりますが、何らかの理由でリダイレクトした後ではありません – abderrahmane

答えて

0

解決策が見つかりました。

ソリューションは、HTML5モード

<base href="/"> 

を使用して

http://site/ 

の代わりに、Googleのデベロッパーコンソール上のキー設定でREDIRECT_URIを変更する際の角度のために必要とされるベースタグを追加することによりでした

http://site/index.cshtml 

リダイレクトURLがベースURLと同じではありません。

したがって、リダイレクトが古いURLに行われたとき、これは後でベースURLと一致せず、角度のルーティングは機能しませんでした。ページが明示的に再ロードされた後 が、この場合には、ブラウザが自動的にそう

http://site/#access_token=... 

にリダイレクトされ、ベースURLとロードされたURLは、この場合、一致しているので、ルーティングが正常に動作します。

関連する問題