Я пытаюсь аутентифицировать пользователя с помощью github с помощью RestKit и сохраняю ответ обратно в данные Core, чтобы повесить токен oauth. Ответ возвращается с 200 или 201, что хорошо, но ничего не сохраняется обратно в контекст. Я предполагаю, что мне не хватает чего-то маленького, но я не могу этого понять. Вот что происходит:
Это происходит в viewDidLoad
RKObjectManager *objectManager = [RKObjectManager sharedManager];
RKManagedObjectStore *managedObjectStore = [RKManagedObjectStore defaultStore];
RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:@"SLAuthentication" inManagedObjectStore:managedObjectStore];
NSString *clientID = [(SLAppDelegate *)[[UIApplication sharedApplication] delegate] clientID];
[entityMapping addAttributeMappingsFromDictionary:@{@"id" : @"tokenID", @"url" : @"url", @"token" : @"oauthToken", @"note" : @"note"}];
entityMapping.identificationAttributes = @[@"tokenID"];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:entityMapping method:RKRequestMethodPUT pathPattern:[NSString stringWithFormat:@"/authorizations/clients/%@", clientID] keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:responseDescriptor];
Вот где делается запрос
NSManagedObjectContext *context = [[[RKObjectManager sharedManager] managedObjectStore] mainQueueManagedObjectContext];
NSString *secret = [(SLAppDelegate *)[[UIApplication sharedApplication] delegate] clientSecret];
NSString *clientID = [(SLAppDelegate *) [[UIApplication sharedApplication] delegate] clientID];
[[RKObjectManager sharedManager].HTTPClient setAuthorizationHeaderWithUsername:userName password:pass];
[[RKObjectManager sharedManager] setRequestSerializationMIMEType:@"application/json"];
[[RKObjectManager sharedManager] putObject:nil path :[NSString stringWithFormat:@"/authorizations/clients/%@", clientID] parameters:@{@"client_secret": secret, @"scopes" : @[@"repo"]} success:nil failure:nil];
//Flush the username and password so that we aren't storing them anymore.
[[RKObjectManager sharedManager].HTTPClient clearAuthorizationHeader];
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"SLUser"];
NSError *error = nil;
NSArray *users = [context executeFetchRequest:request error:&error];
[[users firstObject] setUserName:userName];
[context save:&error];
Но ничего не возвращается. Описание API находится здесь: http://developer.github.com/v3/oauth/#get-or-create-an-authorization-for-a-specific-app