Cognito-Authentifizierung funktioniert, aber Fehler werden angezeigt?
rundsätzlich verwende ich eine vom Entwickler authentifizierte Identität, um meine Benutzer zu authentifizieren. Auch wenn dieser Fehler angezeigt wird:
AWSiOSSDKv2 [Ausführlich] AWSURLResponseSerialization.m Zeile: 87 | - [AWSJSONResponseSerializer responseObjectForResponse: originalRequest: currentRequest: data: error:] | Antworttext: [{"__type": "InvalidParameterException", "message": "Bitte geben Sie einen gültigen öffentlichen Anbieter an"}] 20.10.2015 17: 50: 19.251 BusyTime [56549: 7365231] AWSiOSSDKv2 [Fehler] AWSCredentialsProvider.m Zeile: 435 | __73- [AWSCognitoCredentialsProvider getCredentialsWithCognito: authenticated:] _ block_invoke | GetCredentialsForIdentity fehlgeschlagen. Fehler ist [Error Domain = com.amazonaws.AWSCognitoIdentityErrorDomain Code = 7 "Der Vorgang konnte nicht abgeschlossen werden. (Com.amazonaws.AWSCognitoIdentityErrorDomain Fehler 7.)" UserInfo = 0x7f9d9342dde0 {__type = InvalidParameterBitte geben Sie einen gültigen Versorger an }]
Obwohl dieser Fehler angezeigt wird, gebe ich meine identityId und mein Token zurück und rufe erfolgreich eine Lambda-Methode auf, für deren Aufruf authentifizierte Berechtigungen erforderlich sind. Ich glaube, es hat etwas mit meiner Refresh-Methode zu tun, bin mir aber nicht ganz sicher. Bitte helfen Sie mir bei der Behebung dieses Fehlers.
my credentials provider code:
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;
}];
Meine Aktualisierungsmethode:
- (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];
}