我正在尝试在Objective C中使用AWSCognito
对Amazon SimpleDB数据库进行身份验证。
我用我的Amazon帐户中提供的身份池ID初始化AWSCognitoCredentialsProvider
。问题是,当我尝试从AWSCognitoCredentialsProvider
对象获取访问密钥和秘密密钥时,它们为nil。
我像这样初始化凭证提供者:
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]];
难道我做错了什么?
最佳答案
您是否正在混合适用于iOS的AWS Mobile SDK的版本1和版本2?它们并非旨在一起使用,因此您应该考虑完全迁移到版本2。
适当时,v2 SDK会自动在凭据提供程序上调用- refresh
。因为您没有使用AWSSimpleDB
,所以从未调用- refresh
,这就是为什么accessKey
和secretKey
返回nil
的原因。AWSCognitoCredentialsProvider
生成由accessKey
,secretKey
和sessionKey
组成的AWS临时凭证。 - initWithAccessKey:withSecretKey:
不会获得临时凭证,即使您在凭证提供程序上手动调用- refresh
,AmazonSimpleDBClient
也无法正常工作。
我建议使用AWSSimpleDB
而不是AmazonSimpleDBClient
重写应用程序,以便使用Amazon Cognito Identity。
关于ios - 适用于IOS的AWS Cognito凭证提供程序-访问 key 和 secret key 为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29010644/