0

Microsoft Live Connect を使用して非常に簡単なサインオンをしようとしていますが、返されるトークンの解析に問題があります。この URL を次のように呼びます。

https://login.live.com/oauth20_authorize.srf?client_id=MY_CLIENT_ID&scope=wl.skydrive_update&response_type=token&redirect_uri=http%3A%2F%2FMY_SITE.com%2Fcallback.php

Microsoft サーバーに移動し、ログインして、アクセス許可を確認し、次のようにコールバック URL を正しく読み込みます。

http://MY_SITE.com/callback.php#access_token=LOTS_OF_STUFF&authentication_token=MORE_STUFF&token_type=bearer&expires_in=3600&scope=wl.skydrive_update

問題は、これらのトークンをどのように取得するかです。それをどのように解析すればよいですか?'?' の代わりに '#' を使用しているため、$_GET は空であり、$_POST は空であり、$_SERVER['REQUEST_URI'] は何も表示しません。

4

2 に答える 2

2

通常、ブラウザはハッシュ記号の後の値をサーバーに送信しません。クライアント側で JavaScript を使用して処理できます。参照: URL のハッシュ部分がサーバー側にないのはなぜですか?

于 2012-11-30T06:09:50.507 に答える
0

クライアント側で処理されることを意図したハッシュ文字で返されるのは残念です。サーバーサイド スクリプト (PHP) を使用して値を解析する必要がある場合は、JavaScript を使用して再度リダイレクトできます。次のような JavaScript コードを追加してみてください。

  window.onload = function() {
    // redirect if hash is detected
    if(window.location.hash)
    {
      var redirect_hash = window.location.hash.replace('#', '?');
      var redirect_location = 'http://' + document.domain + redirect_uri;
      window.location = redirect_location;      
    }
  }

その後、リダイレクト時にクエリ文字列の値を解析できます。

于 2012-11-30T06:59:14.583 に答える