This issue happened to me because I was running parseHash() several times.
I noticed after a couple of minutes diving in the auth0.js source code this function that is called when trying to parse the hash:
TransactionManager.prototype.getStoredTransaction = function(state) {
var transactionData;
transactionData = storage.getItem(this.namespace + state);
//this line is the issue
storage.removeItem(this.namespace + state);
return transactionData;
};
First time it runs everything is fine, second time the storage item doesn’t exist anymore so the state in the transaction manager will always be null.
Not sure it’s a good practice to delete something persistant in a getter… I am pretty sure getters should always be idempotent…
I think you should complete your API with a synchronous and idempotent way to parse the Hash like before.