Google Reader의 경우 현재 공식적으로 API를 제공하고 있진 않습니다.
모든 API가 unofficial이라서 언제 바뀔지 모릅니다.
현재까지는 아래와 같은 방법을 사용하면 API에 접근할 수 있습니다.
필요한 정보 :
SID – A session ID, which remains valid until you log out
Token – Similar to a session ID, but expires quickly. Used to access direct API calls
Cookie – An ordinary cookie that uses your SID to authenticate your session on API calls
또, SID와 같이 전송오는 Auth가 필요합니다.
SID , Auth 얻기 :
우선적으로 SID와 Auth를 얻어줘야 합니다.
이는 https://www.google.com/accounts/ClientLogin 페이지에서 얻을 수 있습니다.
https://www.google.com/accounts/ClientLogin?service=reader&Email=?&Passwd=?
처럼 GET 방식으로 얻어올 수 도 있고 POST 방식으로 parameter를 전송하여도 됩니다.
Email과 Passwd가 틀렸다면 401 Not Found를 제공하고, 그렇지 않다면 SID, LSID, Auth 값을 string으로 제공합니다.
이는 C# 사용 시
string resp = reader.ReadToEnd();
int indexSid = resp.IndexOf("SID=") + 4;
int indexLsid = resp.IndexOf("LSID=");
sid = resp.Substring(indexSid, indexLsid - 5);
int indexAuth = resp.IndexOf("Auth=") + 5;
auth = resp.Substring(indexAuth);
int indexN = auth.IndexOf("\n");
auth = auth.Remove(indexN);
같은 식으로 parsing하여 사용합니다.
Token 얻기 :
Token 부터는 얻어온 Auth와 Cookie를 이용하여야 합니다.
Cookie의 내용은 다음과 같습니다.
Name: SID
Value: [your SID]
Path: /
Domain: .google.com
expires : 1600000000
해당 Cookie를 포함해서 전송하며, Header에는 다음과 같은 형식으로 받아온 Auth를 포함시켜야 합니다.
Authorization: GoogleLogin auth=?
C# HttpWebRequest는 아래와 같은 방식으로 추가할 수 있습니다.
윈폰7의 경우
request.Headers[HttpRequestHeader.Authorization] = string.Format("GoogleLogin auth={0}", auth);
일반 .Net C#일 경우
req.Headers.Add(string.Format(“Authorization: GoogleLogin auth={0}”, _auth));
Token의 경우 모든 API에서 필요한 것은 아닙니다만 필요한 경우 Parameter로 전송하게 되어있습니다.
Reference
반응형
'Programming' 카테고리의 다른 글
Kimberley (0) | 2013.02.26 |
---|---|
OpenGL에서 GLSL을 GPGPU 목적으로 사용하기 (0) | 2012.04.12 |
Android OpenGL ES 1.1에서 사각형 그리기 (0) | 2012.01.05 |
Android OpenGL ES 사용에 앞서 알아두면 좋은것 (0) | 2012.01.05 |
[Android] Soundpool 사용하기 + 사용하면서 안 것. (0) | 2011.02.14 |