2013-05-08 65 views
0

我正在研究一个Web应用程序来获取我的用户的Gmail。对于OAuth身份验证,我正在从UI到HTTPHandler和从HttpHandler进行Ajax调用,我正在使HttpWebRequest GET调用到Google服务器。我得到了我在应用程序的用户界面中呈现的完整HTML页面(Google用户登录)的响应。登录并点击登录后,它什么都不做。按照文件,它实际上必须重定向到谷歌页面,并在用户的同意后,我应该得到反对提供的Redirect_uri。没有那种事情发生。下面是我的hanlder进程请求方法的代码块。C#:OAuth 2.0身份验证不会重定向用户同意

公共无效的ProcessRequest(HttpContext的背景下) {

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); 
    } 

在此先感谢。

回答

0

您应该将用户重定向到身份验证网址(使用整页重定向或在弹出窗口中)而不是抓取网址。

+0

谢谢晁,我搞定了...... – user2360498 2013-05-14 17:02:00