2014-05-23 1 views
5

내가 상상할 수있는 프로젝트가 Facebook 앱과 같고 RestKit 초보자이므로 RestKit으로 정리하고 토큰을 처리하는 방법을 파악하는 데 문제가 있습니다.RestKit을 사용하여 토큰 새로 고치기를 자동으로 처리하는 방법

  • 코어 데이터 NSManagedObject 클래스를, 그들 각각에 대해 내가 설정을 처리 RKObjectMapping 및 RKRouteSet
  • 사용자 정의 RKObjectManager 서브 클래스를 제공하는 기능이 범주라는 REST를 추가 :

    은 내가 지금까지 무엇을 가지고 있습니다 헤더, MIME 타입, 인증 헤더와 코어 데이터 저장소를 설정까지
  • RKObjectRequestOperation 서브 클래스

조직의 조언을 얻었지만 나의 주요 질문은 401 HTTP 상태 코드를 수신 한 후 자동 토큰 새로 고침을 구현하고 실패한 요청을 새 토큰으로 다시 실행하는 방법입니다. 지금은 401 응답을 가로 챌 수

- (void)setCompletionBlockWithSuccess:(void (^) (RKObjectRequestOperation *operation , RKMappingResult *mappingResult))success failure:(void (^) (RKObjectRequestOperation *operation , NSError *error))failure

,하지만 지금은 재 다음 토큰을 새로 고치고 또 다른 전화를 걸 필요가 :

나는 나의 RKObjectRequestOperation 서브 클래스에 metod를 오버라이드 (override)에 의해 시작 새 토큰을 사용하여 실패한 작업을 대기열에 추가하는 방법을 알려주십시오.

답변

2

일반적으로 개체 관리자를 사용하는 경우 사용자 지정 RKObjectRequestOperation을 사용하지 않습니다. 나는 그것을 객체 관리자 수준에서 처리 할 것이다.

개체 관리자에서 (성공 및 실패 블록과 함께 제공되는) 각 주요 요청 방법을 무시할 수 있습니다. super을 호출하지만 제공된 버전을 호출하기 전에 일부 논리를 추가하는 새 버전으로 성공 및 실패 블록을 대체하는 이러한 메소드를 구현할 수 있습니다.

이제 추가 로직은 응답 상태를 점검합니다. 토큰 새로 고침이 필요함을 나타내면이를 수행 할 수 있고 객체 관리자는 첫 번째 요청에서 제공된 매개 변수를 사용하여 새로드를 트리거 할 수 있습니다. 문서가 어떤 작업들이 실행하고있는 두 번째 시간을 작동하지 않습니다로가 지원되는지 명시하지 않는 한 또한

, 당신은 ...

+0

안녕 @Wain을 작업을 다시 대기열에 안 좋은 얘기 다시 기억해 주시면 AirPair 세션이 생겼습니다. 요청을 반복하는 데 문제가 있습니다. 특히 호출이 이루어졌지만 성공 및 실패 블록이 두 번째로 트리거되지 않습니다. 그래서 당신은 그 블록들을 객체 관리자의 속성으로 저장하고 거기에있는 모든 것을 처리 할 것을 제안 할 것입니다. –

+0

매개 변수를 보유하고 인스턴스 (다시 인증이 진행되는 동안 더 많은 요청이 들어오는 경우 해당 인스턴스의 목록)를 저장할 새 클래스를 만듭니다. – Wain

관련 문제