Аутентификация AWS для Amazon Cognito

Я новичок на мобильных устройствах. Я пытаюсь пройти аутентификацию до Amazon Cognito. Я сначала вхожу в систему Credentials Provider, используя имя пользователя, контакт, платформу и deviceToken с использованием модели пользовательских сервисов. Затем я возвращаю идентификатор, endPoint и токен. Мне сказали, что мне нужно поменять токен, который я вернул, и обновить мои учетные данные, чтобы меня аутентифицировали на AWS Cognito и S3. Но весь процесс запутан и имеет много разных примеров.

Я создал SignInProvider, расширив AWSSignInProvider, чтобы получить доступ к login - (void): (void (^) (результат ID, ошибка NSError *)) completeHanlder; У меня есть мой токен, конечная точка и идентификатор в моем методе входа в систему. Что мне делать с обработчиком завершения и что будет дальше после.

@implementation SignInProvider

+(instanceType) sharedInstance{}

- (NSString) identityProviderName{}

- (AWSTask<NSString*>*) token{}

- (BOOL) isLoggedIn{}

- (NSSting*) userName{}

- (void) reloadSession{}

- (void) login: (void (^) (id result, NSError *error)) completionHanlder{

authRequest = [IMPCLDMobileAuthenticationRequest new];



     [authRequest setToken:@"930fc1b56d8ca19a84500f9a79af71b65f60331f0242ce4395cdf41186443692"];

        [authRequest setPassword:@"pin"];

        [authRequest setUsername:@"[email protected]"];

        [authRequest setPlatform:@"ios"];

        serviceClient = [IMPCLDImpressionInternalMicroserviceClient defaultClient];


        [[serviceClient mobileAuthenticationPost:authRequest] continueWithBlock:^id(AWSTask *loginTask)
     {


    //what to do here with my loginTask results (token, endpoint, identityId)

        }

    return nil;

    }

Ответ 1

Чтобы обменять/сохранить токен в AWS, вам нужно сделать ниже в continueWithBlock

[[serviceClient mobileAuthenticationPost:authRequest] continueWithBlock:^id(AWSTask *loginTask)
 {
     AWSSNSCreateEndpointResponse *response = loginTask.result;
     AWSSNSSubscribeInput *subscribeRequest = [AWSSNSSubscribeInput new];
     subscribeRequest.endpoint = response.endpointArn;
     subscribeRequest.protocols = @"application";
     subscribeRequest.topicArn = YOUR_TOPIC_ARN;
     return [sns subscribe:subscribeRequest];
 }] continueWithBlock:^id(AWSTask *task) {
     if (task.cancelled) {
         NSLog(@"Task cancelled");
     }
     else if (task.error) {
         NSLog(@"Error occurred: [%@]", task.error);
     }
     else {
         NSLog(@"Success");
     }
     return nil;
 }];