Programming

Google Reader API를 이용하기 위해 SID와 Token 얻어오기

라우드니스 2012. 3. 11. 21:13

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



반응형