1

これに対する関連する回答を見つけることができなかったので、質問する必要があります:)
自分のサイトにグーグルプラスログインを実装しました。いくつかの回避策で問題なく動作しますが...
Google から自分のサイトにリダイレクトされると、次の URL に戻ります。

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

ここのこのパラメーターのため、#state=/profile&最初に読み込み時に JavaScript で URL を読み取り、
この部分を削除して URL を修正してから、次の操作を行う必要があります。

var url = "Default.aspx?" + queryString;
                window.location = url; 

そして、コードで通常どおりクエリ文字列を読み続けることができます。
これを行うと、ページに2つのポストバックが作成され、可能であればこれを避けたいため、これは好きではありません。
このリダイレクト URL にはこれが必要ですか、それとも回避できますか?

Google にリダイレクト:

string url = "https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email&state=%2Fprofile&redirect_uri="+this.Return_url+"&response_type=token&client_id=" + this.Client_ID;

        Response.Redirect(url);

サイトに戻ったら:

if (this.Request.QueryString["access_token"] != null)
            {
                String URI = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + Request.QueryString["access_token"].ToString();

                WebClient webClient = new WebClient();
                Stream stream = webClient.OpenRead(URI);
4

1 に答える 1

4

に変更response_type=tokenresponse_type=codeます。コールバック URLcodeには、フラグメントではなくサーバー側でアクセス可能なクエリ パラメータが含まれます。次に、ステップ 4を実装して、コードを access_token に交換する必要があります。

于 2014-10-27T23:26:29.527 に答える