Prístup JavaScriptu k fragmentu URL hlavičky Location pre OAuth 2
Implicitný grant OAuth 2.0 (http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.2) zahŕňa zaujímavú spoluprácu medzi klientskou aplikáciou, prehliadačom a autorizačným serverom. Autorizačný server vráti prehliadaču stavový kód HTTP 302 s hlavičkou Location nasledovne:
Miesto: http://clientapp.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600
Prehliadač odstráni fragment pred vykonaním presmerovania a služba na adrese clientapp.com/cb by mala odpovedať podľa špecifikácie „webovou stránkou (zvyčajne HTML dokumentom s vloženým skriptom) schopnou pristupovať k úplnému URI presmerovania vrátane fragmentu uchovaného používateľským agentom a extrahovať prístupový token (a ďalšie parametre) obsiahnuté vo fragmente“.
Implementoval som časť autorizovaného servera tohto, ale mám veľmi malú skúsenosť s JavaScriptom. Ako prinútite JavaScript, aby získal fragment, ktorý prehliadač odstránil pred presmerovaním?
Ďakujem,
Michael
Odpoveď č. 1
Skúste niečo takéto (prevzaté z tohto nemeckého článku):
<script>
var fragmentString = location.hash.substr(1);
var fragment = {};
var fragmentItemStrings = fragmentString.split('&');
for (var i in fragmentItemStrings) {
var fragmentItem = fragmentItemStrings[i].split('=');
if (fragmentItem.length !== 2) {
continue;
}
fragment[fragmentItem[0]] = fragmentItem[1];
}
</script>
Potom môžete odkazovať na svoj prístupový token pomocou fragment['access_token'].
