2010-05-05 5 views
3

Я могу успешно получить SID (SessionID) для своей учетной записи Google Reader. Чтобы получить фид и выполнять другие операции внутри Google Reader, вам необходимо получить токен авторизации. У меня проблемы с этим. Может кто-то пролил свет?API Google Reader с Objective-C - проблема с получением токена

//Create a cookie to append to the GET request 
NSDictionary *cookieDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"SID",@"NSHTTPCookieName",self.sessionID,@"NSHTTPCookieValue",@".google.com",@"NSHTTPCookieDomain",@"/",@"NSHTTPCookiePath",nil]; 
NSHTTPCookie *authCookie = [NSHTTPCookie cookieWithProperties:cookieDictionary]; 

//The URL to obtain the Token from 
NSURL *tokenURL = [NSURL URLWithString:@"http://www.google.com/reader/api/0/token"]; 
NSMutableURLRequest *tokenRequest = [NSMutableURLRequest requestWithURL:tokenURL]; 

//Not sure if this is right: add cookie to array, extract the headers from the cookie inside the array...? 
[tokenRequest setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:[NSArray arrayWithObjects:authCookie,nil]]]; 

//This gives me an Error 403 Forbidden in the didReceiveResponse of the delegate 
[NSURLConnection connectionWithRequest:tokenRequest delegate:self]; 

Я получаю 403 Запретную ошибку в качестве ответа от Google. Вероятно, я не делаю это правильно. Я установил значения словаря в соответствии с документацией для NSHTTPCookie.

ответ

1

Ключами от свойств печенья должны быть NSHTTPCookie constants, а не буквальные строки, как вы их дадите.

NSDictionary *cookieDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"SID",NSHTTPCookieName, 
      self.sessionID,NSHTTPCookieValue, 
      @".google.com",NSHTTPCookieDomain, 
      @"/",NSHTTPCookiePath, 
      nil]; 

Обратите внимание, что константы значений не равны их именам; вообще говоря, они, по-видимому, являются именами без «NSHTTPCookie» (например, NSHTTPCookieDomain == @"Domain"), но вы не должны полагаться на это. Перечитайте документацию.

+0

OMG YOU A A MY SAVIOR – Justin