Google Reader API с Objective-C - проблема с получением токена - PullRequest
3 голосов
/ 05 мая 2010

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

//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 Forbidden в ответ от Google. Я, вероятно, не делаю это правильно. Я устанавливаю значения словаря в соответствии с документацией для NSHTTPCookie.

1 Ответ

1 голос
/ 05 мая 2010

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

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

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

...