私は、アプリケーションにログインするためにOauth暗黙の許可フローを使用しています。ユーザーが認証されていないサイトにアクセスすると、それらは次のような構造でURLに送信されます。Safariはurl変数を解釈しませんか?
baseurl + '/oauth/authorize?response_type=token&client_id=xxxx&redirect_uri=' + redirecturl
baseurl
は、ユーザー名とパスワードを入力するための入力を含むページの場所です。正しい資格情報を入力し、そのページの「ログイン」ボタンをクリックすると、redirecturl
に転送されます。 redirecturl
は、ユーザーが最初にアクセスしようとしたアプリケーション自体(角型アプリ)の場所です。
次のコードは、ユーザーがログインした後に発生する特定のケースを処理します。
$urlRouterProvider
.when('/token_type=bearer&access_token=:accessToken', function ($location, $state, User, storageService) {
storageService.clearAll();
User.authenticate($location.path().substr(1));
$state.go('marketplace.applications');
}
);
私はChromeを使用する場合は、予想通り、すべての作品。 Safariを使用すると、上記のコードは決して実行されません。
$urlRouterProvider.when()
に渡される文字列に含まれる:accessToken
に注目してください。
調査したところ、$urlRouterProvider.when()
に渡された文字列の:accessToken
部分を削除すると、Chromeで同じ動作を再現できることがわかりました。これはSafariが:accessToken
変数をどのように解釈するのか分からないと私につながります。 Safariが私が使用しているコードと互換性のないURLをどのように解釈するのか、それとも完全に何か他のものがありますか?
ありがとうございます。