2010-03-19 114 views
1

我想用下面的代码验证谷歌,但谷歌送我回到登录页面再次。谷歌认证的困难

//STEP# 1 
       string loginURL = "https://www.google.com/accounts/ServiceLoginBox?service=analytics&nui=1&hl=en-US&continue=https%3A%2F%2Fwww.google.com%2Fanalytics%2Fsettings%2F%3Fet%3Dreset%26hl%3Den%26et%3Dreset%26hl%3Den-US"; 
       request = (HttpWebRequest)WebRequest.Create(loginURL); 
       request.CookieContainer = cookieJar; 
       request.Method = "GET";    
       request.KeepAlive = true; 
       request.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4"; 


       HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 


       foreach (Cookie cook in response.Cookies) 
       { 
         cookieJar.Add(cook); 
       } 


       using (StreamReader sr = new StreamReader(response.GetResponseStream())) 
       { 
        serverResponse = sr.ReadToEnd();      
        sr.Close(); 
       }   

       galx = ExtractValue(serverResponse,"GALX","name=\"GALX\" value=\""); 

       Console.WriteLine(galx); 


       //Request# 2 

       string uriWithData = "https://www.google.com/accounts/ServiceLoginBoxAuth"; 
       request = (HttpWebRequest)WebRequest.Create(uriWithData); 
       request.KeepAlive = true; 
       request.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4"; 
       request.Method = "POST"; 
       request.CookieContainer = cookieJar; 
       string param = string.Format("Email={0}&Passwd={1}&continue={2}&service=analytics&nui=1&dsh=8209101995200094904&GALX={3}&hl=en-US&PersistentCookie=yes","**my email address**",p,"",galx); 
       byte[] postArr = StrToByteArray(param); 
       request.ContentType = @"application/x-www-form-urlencoded"; 
       request.ContentLength = param.Length; 

       Stream reqStream = request.GetRequestStream(); 
       reqStream.Write(postArr,0,postArr.Length); 
       reqStream.Close(); 

       response = (HttpWebResponse)request.GetResponse(); 


       foreach (Cookie cook in response.Cookies) 
       { 
         cookieJar.Add(cook); 
       } 


       using (StreamReader sr = new StreamReader(response.GetResponseStream())) 
       { 
        serverResponse = sr.ReadToEnd(); 

        Console.WriteLine(serverResponse); 
        // Close and clean up the StreamReader  
        sr.Close(); 
       }   
+0

你得到的错误是什么?在女巫点不工作? – Aristos 2010-03-19 12:39:39

+0

你会得到什么样的异常/消息?什么不起作用? – Younes 2010-03-19 12:40:12

+0

@ Younes,@ Aristos它让我回到登录页面。 – developer 2010-03-19 12:44:24

回答

0

我不知道我很确定没有多少人想要筛选那么多的代码。

我一眼就可以看到可能导致问题的一件事就是您玩的曲奇太多。

创建一个CookieContainer,并将它传递给每个请求。

无需“转移”或“重新创建”容器。

+0

我只有一个cookiecontainer对象,我发送每个请求 – developer 2010-03-19 12:43:35

+0

@Sanders cookieJar对象范围是全局的 – developer 2010-03-19 12:45:36

+0

@ user283405 - 无论您看到“cookieJar.Add(cook)”就是我所说的。不仅是不必要的,它可能是问题。 – 2010-03-19 12:50:09