IOS的AWS Cognito凭据提供程序 - 访问密钥和密钥为零

时间:2015-03-12 13:06:09

标签: ios objective-c amazon-simpledb amazon-cognito aws-sdk-ios

我正在尝试使用Objective C中的AWSCognito来验证Amazon SimpleDB数据库。 我使用我的亚马逊帐户中提供的身份池ID初始化AWSCognitoCredentialsProvider。问题是,当我尝试从AWSCognitoCredentialsProvider对象获取访问密钥和密钥时,它们是零。

我认为凭证提供者喜欢这样:

 AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1 accountId:ACCOUNT_ID identityPoolId:IDENTITY_POOL_ID unauthRoleArn:UNAUTH_ROLE authRoleArn:AUTH_ROLE];

 AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

之后,我正在尝试初始化SimpleDB客户端,如下所示:

sdbClient = [[AmazonSimpleDBClient alloc] initWithAccessKey:[credentialsProvider accessKey] withSecretKey:[credentialsProvider secretKey]]; 

我做错了吗?

1 个答案:

答案 0 :(得分:1)

您是在混合适用于iOS的AWS Mobile SDK的第1版和第2版吗?它们不是一起使用的,您应该考虑完全迁移到版本2.

v2 SDK会在适当时自动调用凭据提供程序上的- refresh。由于您未使用AWSSimpleDB,因此- refresh从未被调用过,这就是accessKeysecretKey返回nil的原因。

AWSCognitoCredentialsProvider生成由accessKeysecretKeysessionKey组成的AWS临时凭证。 - initWithAccessKey:withSecretKey:不会获取临时凭据,即使您在凭据提供程序上手动调用- refreshAmazonSimpleDBClient也无法正常运行。

我建议使用AWSSimpleDB而不是AmazonSimpleDBClient重写应用,以便使用Amazon Cognito Identity。