Ошибка доступа к API конечных точек Google Reader - PullRequest
0 голосов
/ 22 ноября 2011

Я пытаюсь внедрить google reader в приложение для iPhone, и до сих пор успешно получил sid и auth . Проблема возникает, когда я пытаюсь вызвать API оконечных точек с GET .. Вот код:

 ASIHTTPRequest *request = [self requestForAPIEndpoint:@"https://www.google.com/reader/api/0/subscription/list?output=json"];
 [request setDelegate:self];
 [request startAsynchronous];

- (ASIHTTPRequest *) requestForAPIEndpoint: (NSString *) apiEndpoint
{
 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: apiEndpoint]];
[request addRequestHeader: @"User-Agent" value: @"YourClient"];
 [request addRequestHeader: @"Cookie" value: signature];
 NSLog(@"Sig = %@",signature);
 [request addRequestHeader: @"Authorization" value: autho];
 return request.
}

Авторизация и подпись установлены правильно. Однако каждый раз, когда я получаю обратный вызов в - (void) requestFailed: (ASIHTTPRequest *) запрос метод. Что это я делаю не так ?? Нужно ли мне регистрировать, где получить доступ к API и установить user-agent с таким именем ??

Я изменил метод requestForAPIEndpoint следующим образом, и у меня возникла та же проблема.

- (ASIHTTPRequest *) requestForAPIEndpoint: (NSString *) apiEndpoint
{

NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:signature forKey:NSHTTPCookieValue];
[properties setValue:@"SID" forKey:NSHTTPCookieName];
[properties setValue:@".google.com" forKey:NSHTTPCookieDomain];
[properties setValue:@"1600000000" forKey:NSHTTPCookieExpires];
[properties setValue:@"/" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: apiEndpoint]];
[request setUseCookiePersistence:NO];
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];

[request addRequestHeader: @"User-Agent" value: @"YourClient"];
[request addRequestHeader: @"Authorization" value: autho];
 return request;
} 

1 Ответ

2 голосов
/ 22 ноября 2011

Вам не нужно предоставлять SID cookie, если вы используете ClientLogin (через заголовок Authorization).Информацию о поддерживаемых схемах аутентификации см. В http://code.google.com/p/google-reader-api/wiki/Authentication.

Кроме того, заголовок Authorization следует отформатировать как GoogleLogin auth=<auth token>, где <auth token> - это значение Auth из ответа ClientLogin.

...