0

サイトに Google ログインを実装しています。
問題は、Google が (確認後に) 私を自分のサイトにリダイレクトするときに、クエリ文字列からアクセス トークンを取得できないことです。
これは URL です:

http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600

これ#state=/profileにより何らかの問題が発生すると思われますが、処理できません。
何か不足していますか?

4

2 に答える 2

1

あなたが使用することができます

document.URL で URL を取得します。

次に、URL を #state=/profile& で分割します

次に、& で分割された配列の 2 番目の部分。

次に、各セクションは最初の = で分割されます

もっとエレガントな解決策があるかもしれませんが、これはうまくいくはずです。

于 2014-10-25T21:57:31.330 に答える
1

このような URL の場合、#の後に がありますが、 ?Default.aspxではありません。の場合、クエリ文字列を取得する直接的な方法はありません (クエリ文字列ではなく URL フラグメントとして知られています) これらはクライアント側で解析されることを意図しており、サーバー側は にアクセスできません。URL Fragments

http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600

リンクには # が含まれます。これは、Web ページ上のアンカー、位置を意味します。ブラウザーは、ページ全体のアドレスのみを含む GET 要求をサーバーに送信します。アンカー、フラグメントなどは含まれません。サーバーがページを返すと、ブラウザーはページを配置する場所を認識して、アンカーの位置が表示されるようにします。クライアントサイドまたはJavascriptでは、アンカーにアクセスできるため可能です。

これを読む -サーバー側から URL ハッシュ (#) を取得する方法

于 2014-10-26T09:40:50.347 に答える