编程点滴

FOR WEB WINFORM DEVELOP!!
随笔 - 20, 文章 - 0, 评论 - 179, 阅读 - 82704

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

GoogleReader用户登陆验证C#具体实现

Posted on   grayboy  阅读(3424)  评论(6编辑  收藏  举报

继前两篇文章

google reader api:http://www.cnblogs.com/mybear/archive/2011/02/18/1957704.html

GoogleReader用户登陆验证原理:http://www.cnblogs.com/mybear/archive/2011/02/18/1957769.html

相信大家对GoogleReader api已经有所认识,下面就讲下GoogleReader用户登陆验证C#具体实现

1.创建HttpWebRequest

复制代码
private HttpWebRequest CreateRequest(string url)
{
HttpWebRequest webRequest
= WebRequest.Create(url) as HttpWebRequest;
IWebProxy defaultParoxy
= HttpWebRequest.GetSystemWebProxy();
webRequest.Proxy
= defaultParoxy;
webRequest.UserAgent
= "GoogleReader for Windows/"+Assembly.GetExecutingAssembly().GetName().Version;
webRequest.CookieContainer
= _CookieContainer;
webRequest.ServicePoint.Expect100Continue
= false;
webRequest.Timeout
= 20000;

if (_isLoginIn)
webRequest.Headers.Add(
"Authorization", "GoogleLogin auth=" + _LoginAuth[2].Split('=')[1]);
return webRequest;
}
复制代码

2.使用HttpPost传递登陆参数

复制代码
private string PostGoogleLogin(HttpWebRequest webRequest,string queryString)
{
string ResponseString = string.Empty;
webRequest.ContentType
= "application/x-www-form-urlencoded";
webRequest.Method
= "POST";

byte[] QueryData = Encoding.UTF8.GetBytes(queryString);
webRequest.ContentLength
= QueryData.Length;
try
{
using (Stream stream = webRequest.GetRequestStream())
{
stream.Write(QueryData,
0, QueryData.Length);
stream.Close();
ResponseString
= GetResponseString(webRequest);
}
}
catch (Exception ex)
{
LoginError
+= ex.ToString() + "\r\n";
}
return ResponseString;
}
复制代码

3.传递用户名和密码实现登陆

复制代码
public void GoogleLogin(string email,string password)
{
string SID_ID = string.Empty;
string responseData = string.Empty;
List
<Parameter> queryParams = new List<Parameter>();
queryParams.Add(
new Parameter("service", "reader"));
queryParams.Add(
new Parameter("Email", Uri.EscapeDataString(email)));
queryParams.Add(
new Parameter("Passwd", Uri.EscapeDataString(password)));
queryParams.Add(
new Parameter("source", "Mobile Newspaper/0.1"));
queryParams.Add(
new Parameter("continue", "http://www.google.com"));

HttpWebRequest webRequest
=CreateRequest("https://www.google.com/accounts/ClientLogin");

responseData
= PostGoogleLogin(webRequest, HttpUtil.GetQueryParamters(queryParams));
string pattern="SID=(.*)";
Regex reg
= new Regex(pattern, RegexOptions.IgnoreCase);
if (reg.IsMatch(responseData))
{
_isLoginIn
= true;
_LoginAuth
= responseData.Split('\n');
SID_ID
= reg.Match(responseData).Groups[1].Value;
_CookieContainer.Add(
new Cookie("SID",SID_ID,"/",".google.com"));
}
}
复制代码

至此,google用户登陆验证完成了!我们可以根据googlereader提供的API打造一个属于自己的客户端RSS订阅器!

比如,我们要获得已阅读的20篇文章:可以用httpget的方法访问:http://www.google.com/reader/atom/user/[user ID]/state/com.google/read

[user ID]可以使用“-”来代表当前登陆的用户,返回的记录是XML数据格式:

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示