diff --git a/oauth-service.js b/oauth-service.js index a84fa22..dca069a 100644 --- a/oauth-service.js +++ b/oauth-service.js @@ -84,6 +84,9 @@ var OAuthService = (function () { var _this = this; options = options || {}; var parts = this.getFragment(); + if(parts === false){ + return false; + } var accessToken = parts["access_token"]; var idToken = parts["id_token"]; var state = parts["state"]; @@ -280,7 +283,14 @@ var OAuthService = (function () { ; OAuthService.prototype.getFragment = function () { if (window.location.hash.indexOf("#") === 0) { - return this.parseQueryString(window.location.hash.substr(1)); + if(this.redirectUri.indexOf('#')) { + var returnUrlHashPart = this.redirectUri.split('#'); + var currentHashPart = window.location.hash.substr(1); + if(currentHashPart.indexOf(returnUrlHashPart[1]) === 0) { + return this.parseQueryString(window.location.hash.substr(1)); + } + } + return false; } else { return {}; @@ -293,6 +303,10 @@ var OAuthService = (function () { return data; } pairs = queryString.split("&"); + if(pairs.length && pairs[0].indexOf("?")){ + var firstPart = pairs[0].split("?"); + pairs[0] = firstPart[1]; + } for (var i = 0; i < pairs.length; i++) { pair = pairs[i]; separatorIndex = pair.indexOf("=");