iOS AWS API Gateway: доступ без аутентификации для этого пула идентификаторов не поддерживается - PullRequest
0 голосов
/ 19 октября 2018
//setup service config
    AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:CognitoIdentityUserPoolRegion credentialsProvider:nil];


    //create a pool


    AWSCognitoIdentityUserPoolConfiguration *configuration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:CognitoIdentityUserPoolAppClientId  clientSecret:nil poolId:CognitoIdentityUserPoolId];

    [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:configuration forKey:@"UserPool"];

    AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"];

    pool.delegate = self;

    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoIdentityUserPoolRegion
                                                                                                    identityPoolId:CognitoIdentityPoolId];

    AWSServiceConfiguration *configuration1 = [[AWSServiceConfiguration alloc] initWithRegion:CognitoIdentityUserPoolRegion
                                                                          credentialsProvider:credentialsProvider];

    [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration1;

Выше мой код в appdelegate.Я использую образец из документа AWS "CognitoYourUserPool" для входа в систему.И пытался вызвать API с помощью Generated SDK для iOS.

 API_Client *apiInstance = [API_Client defaultClient];
    [apiInstance setAPIKey:@"xxxxxxxxxxxxxxxxxxxxxx"];        
    [[apiInstance presetTypeGet] continueWithBlock:^id _Nullable(AWSTask * _Nonnull t) {
        NSLog(@"error: %@",t.error);
        NSLog(@"result: %@",t.result);
        return nil;
    }];

Я вызвал API после входа в систему. Но это ошибка.Я не знаю почему сейчас.Пожалуйста, помогите мне.Если вам нужна дополнительная информация, пожалуйста, спросите.Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Через 2 дня я разобрался.

 AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoIdentityUserPoolRegion
                                                                                                    identityPoolId:CognitoIdentityPoolId identityProviderManager:pool];

Нужно установить identityProviderManager.Большое спасибо.

0 голосов
/ 19 октября 2018

Попробуйте это:

AWSCognitoIdentityUserPoolConfiguration *configuration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:CognitoIdentityUserPoolAppClientId  clientSecret:nil poolId:CognitoIdentityUserPoolId];

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoIdentityUserPoolRegion identityPoolId:CognitoIdentityPoolId];
AWSServiceConfiguration *configuration1 = [[AWSServiceConfiguration alloc] initWithRegion:CognitoIdentityUserPoolRegion credentialsProvider:credentialsProvider];

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration1;

[AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration: configuration1 userPoolConfiguration:configuration forKey:@"UserPool"];

AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"];

pool.delegate = self;
...