2011-11-22 1 views
0

iPhone APP에 Google 리더를 구현하려고하는데 지금까지 시드auth을 성공적으로 받았습니다. 문제는 내가 과 끝점 API가을 GET 호출 할 때 .. 여기 발생하는 코드의 다음 autho의 및 서명이 올바르게 설정되어Google 리더의 Endpoints API에 액세스하는 중 오류가 발생했습니다.

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에 액세스 할 위치를 등록하고 해당 이름으로 사용자 에이전트를 설정해야합니까?

다음과 같이 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; 
} 

답변

2

당신은 당신이합니다 (Authorization 헤더를 통해)하여 ClientLogin을 사용하는 경우 SID 쿠키를 제공 할 필요가 없습니다. 지원되는 인증 체계는 http://code.google.com/p/google-reader-api/wiki/Authentication을 참조하십시오.

또한 헤더의 형식은 GoogleLogin auth=<auth token>이어야하며 여기서 <auth token>은 ClientLogin 응답의 Auth 값입니다.

+0

SID 쿠키도 제거한 후에 변경되지 않습니다. 응답이 다시 실패합니다. – Shri

+0

코드에서'autho' 변수의 값은 무엇입니까? 예상되는 형식은'GoogleLogin auth = '입니다. 여기서' '은 ClientLogin에서 얻은 것입니다. –

+0

Autho는 인증 ID 만있었습니다 .. GoogleLogin auth = 으로 변경하면 매력처럼 작동합니다 .. 많이 고맙습니다. 이 내용을 편집하여 답안에 입력 할 수있는 경우이를 수락 한 것으로 선택합니다. – Shri