我正在使用XCode 7.3在Swift中开发iOS应用程序。该应用程序与DynamoDB数据库通信,允许用户读取和写入数据。最近,我更新了我的Pod,其中包括,AWSCognito
,AWSCognitoIdentityProvider
和其他AWS吊舱。我还建立了一个新的用户群,根据此页面上的说明:AWS Cognito错误:未设置身份验证代理
由于以下这些指令的一部分,我把下面的代码在AppDelegate类的didFinishLaunchingWithOptions方法:
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil)
let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId:APP_CLIENT_ID, clientSecret: appSecret, poolId: USER_POOL_ID)
AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: USER_POOL_NAME)
let pool = AWSCognitoIdentityUserPool(forKey:USER_POOL_NAME)
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: IDENTITY_POOL_ID, identityProviderManager:pool)
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
通过从AWS控制台开始导航到Cognito,Federated Identities,我按照说明创建的身份池,“编辑身份池”,然后复制“身份池ID”旁边显示的字符串,我获得了IDENTITY_POOL_ID
的值。通过在同一页面上展开“Authentication Providers”并选择“Cognito”选项卡,我获得了APP_CLIENT_ID
的值。对于USER_POOL_NAME
,我在此页面上使用了“身份池名称”,对于USER_POOL_ID
,我使用了“身份验证提供程序”下列出的“用户池ID”值。我不清楚我是否正确设置了这些值,因为我不完全确定开发者指南的哪些值正在说我应该使用。
更新吊舱和完成这些修改后,当我运行的应用程序,我看到的错误:
[Error] AWSCredentialsProvider.m line:569 | __44-[AWSCognitoCredentialsProvider credentials]_block_invoke.345 | Unable to refresh. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityProviderErrorDomain Code=-1000 "Authentication delegate not set" UserInfo={NSLocalizedDescription=Authentication delegate not set}]
这也是现在无法访问DynamoDB数据,虽然应用程序仍然没有启动。我怀疑部分问题是我的DynamoDB数据库不在USEast中,但我不确定这是否会导致此错误。除了更改AppDelegate中的代码外,我还试图查找可能的原因,但错误仍然相同。我可以调查哪些可能的原因?如果它有所不同,我试图让应用程序授权用户,除了恢复DynamoDB功能,并且我想在解决此问题的过程中完成这两个操作。
谢谢,这些链接非常有帮助。但是,现在我已经设置了登录/注册屏幕,当我输入信息并尝试注册我的应用时,出现新的错误:{“__ type”:“ResourceNotFoundException”,“message”:“用户池客户端####不存在。“}这与我用于APP_CLIENT_ID的值相同,我从”身份验证提供程序“下的”应用程序客户端ID“字段复制它,但它在其他地方看起来并不存在。这应该与我在用户池或我的联合身份池中看到的其他值匹配吗?创建我的泳池时,我应该从哪里获得这个价值? – user3726962
没关系,我更仔细地查看了用户池控制台,发现了我正在寻找的值。 – user3726962