6

OAuth 2.0の暗黙的な付与(http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.2)には、クライアントアプリケーション、ブラウザー、および承認サーバー間の興味深い振り付けが含まれます。認証サーバーは、次のようなLocationヘッダーを使用してHTTP302ステータスコードをブラウザに返します。

場所:http://clientapp.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600

ブラウザはリダイレクトを実行する前にフラグメントをドロップし、clientapp.com / cbのサービスは、[仕様から]「次のような完全なリダイレクトURIにアクセスできるWebページ(通常はスクリプトが埋め込まれたHTMLドキュメント)で応答する必要があります。ユーザーエージェントによって保持され、フラグメントに含まれるアクセストークン(およびその他のパラメーター)を抽出するフラグメント」。

これの承認サーバー部分を実装しましたが、JavaScriptの経験はほとんどありません。リダイレクトの前にブラウザが取り除いたフラグメントにJavaScriptでアクセスするにはどうすればよいですか?

ありがとう、
マイケル

4

1 に答える 1

7

次のようなことを試してください (このドイツの記事から引用):

<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>

次に、アクセス トークンを で参照できますfragment['access_token']

于 2012-09-05T09:42:21.400 に答える