【问题标题】:iOS AWS API Gateway : Unauthenticated access is not supported for this identity pooliOS AWS API Gateway:此身份池不支持未经身份验证的访问
【发布时间】:2019-03-24 03:53:28
【问题描述】:
//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”中的示例登录。 并尝试使用 Generated SDK for iOS 调用 API。

 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。但这是错误的。 我现在不知道为什么。 请帮我。如果您需要更多信息,请询问。 非常感谢。

【问题讨论】:

  • 您是否混淆了您的配置?首先你设置一个服务配置,而不是一个配置1。

标签: aws-api-gateway amazon-cognito aws-ios


【解决方案1】:

试试这个:

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;

【讨论】:

【解决方案2】:

2天后,我想通了。

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

需要设置identityProviderManager。 非常感谢。

【讨论】:

    猜你喜欢
    • 2017-05-31
    • 2017-07-01
    • 2019-02-09
    • 1970-01-01
    • 2017-06-14
    • 2016-06-24
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多