C#:OAuth 2.0身份验证不会重定向以供用户同意

时间:2013-05-08 02:14:17

标签: c# asp.net httpwebrequest google-api google-oauth

我正在开发一个可以获取用户电子邮件的网络应用程序。对于OAuth身份验证,我正在进行从UI到HTTPHandler和HttpHandler的Ajax调用我正在对谷歌服务器进行HttpWebRequest GET调用。我收到了我在应用程序UI中呈现的完整HTML页面(Google用户登录)的响应。登录并单击登录后,它什么也没做。根据文档,它实际上必须重定向到谷歌页面,并在用户同意后,我应该得到提供的Redirect_uri的respponse。什么都没发生。下面是我的hanlder流程请求方法的代码块。

public void ProcessRequest(HttpContext context)         {

String url = "https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fmail.google.com%2Fmail%2Ffeed%2Fatom&response_type=code&access_type=offline&redirect_uri=http%3A%2F%2Flocalhost%3A50639%2FresponseHandler.ashx&approval_prompt=force&client_id=XXXXXXXXXXXX.apps.googleusercontent.com";


        HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
        webrequest.Method = "GET";
        HttpWebResponse response = (HttpWebResponse)webrequest.GetResponse();
        Stream picasaResponse = response.GetResponseStream();
        HttpContext.Current.Response.Redirect(response.ResponseUri.ToString());
        StreamReader picasaReader = new StreamReader(picasaResponse);
        string picasaAPIResponse = picasaReader.ReadToEnd();
        Response.InnerHtml = picasaAPIResponse;
        context.Response.ContentType = "text/plain";
        context.Response.Write(response);
    }

先谢谢。

1 个答案:

答案 0 :(得分:0)

您应该将用户重定向到auth网址(使用整页重定向或弹出窗口),而不是抓取网址。