¿Autenticación de Cognito funciona pero se muestran errores?

Básicamente estoy usando una identidad autenticada de desarrollador para autenticar a mis usuarios. Aunque este error se muestra:

AWSiOSSDKv2 [Verbose] AWSURLResponseSerialization.m línea: 87 | - [AWSJSONResponseSerializer responseObjectForResponse: originalRequest: currentRequest: data: error:] | Cuerpo de respuesta: [{"__type": "InvalidParameterException", "mensaje": "Proporcione un proveedor público válido"}] 2015-10-20 17: 50: 19.251 BusyTime [56549: 7365231] AWSiOSSDKv2 [Error] AWSCredentialsProvider.m línea: 435 | __73- [AWSCognitoCredentialsProvider getCredentialsWithCognito: autenticado:] _ block_invoke | GetCredentialsForIdentity falló. El error es [Error Domain = com.amazonaws.AWSCognitoIdentityErrorDomain Code = 7 "La operación no se pudo completar. (Com.amazonaws.AWSCognitoIdentityErrorDomain error 7.)" UserInfo = 0x7f9d9342dde0 {__type = Mensaje inválido. }]

Aunque se muestra este error, sigo devolviendo mi identidad y token e invocando con éxito un método lambda que requiere privilegios autenticados para llamar. Creo que tiene algo que ver con mi método de actualización, pero no estoy exactamente seguro. Por favor, ayúdame a lidiar con este error.

mi código de proveedor de credenciales:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [AWSLogger defaultLogger].logLevel = AWSLogLevelVerbose;
    id<AWSCognitoIdentityProvider> identityProvider = [[BusytimeAuthenticated alloc] initWithRegionType:AWSRegionUSEast1
                                                                                             identityId:nil
                                                                                         identityPoolId:@"EXAMPLEPOOLID"
                                                                                logins:@{@"login.busytimeapp": [defaults objectForKey:@"username"]}
                                                                                           providerName:@"login.busytimeapp"
                                                       ];

    credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
                                                                   identityProvider:identityProvider
                                                                      unauthRoleArn:nil
                                                                        authRoleArn:nil];

    configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
                                                credentialsProvider:self.credentialsProvider];
    AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
    [[credentialsProvider refresh] continueWithBlock:^id(BFTask *task){
        [self testAuth];
        return nil;
    }];

Mi método de actualización:

- (BFTask *)refresh {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if (![self authenticatedWithProvider]) {
        return [super getIdentityId];
    }else{
        NSDictionary *post = [[NSDictionary alloc] initWithObjectsAndKeys:
                              [defaults objectForKey:@"username"], @"username",
                              [defaults objectForKey:@"password"], @"password",
                              nil];
        NSError *error;
        NSData *postData = [NSJSONSerialization dataWithJSONObject:post options:0 error:&error];
        NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:[NSURL URLWithString:@"SOMEURL"]];
        [request setHTTPMethod:@"POST"];
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [request setHTTPBody:postData];
        NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
        __block BOOL isLogged = false;
        [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
            NSDictionary *newJSON = [NSJSONSerialization JSONObjectWithData:data
                                                                    options:0
                                                                      error:&error];
            isLogged = true;
            if(!newJSON){
                NSLog(@"DID NOT AUTHENTICATE");
            }else{

            self.identityId = [newJSON objectForKey:@"IdentityId" ];
            self.token = [newJSON objectForKey:@"Token" ];
            NSLog(@"Result: %@", newJSON);
            }

        }] resume];

        return [super getIdentityId];

    }
    return [super getIdentityId];
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta