iOS AWS AppSync 401 IAM + Cognito

时间:2019-11-25 09:46:36

标签: ios amazon-cognito amazon-iam aws-appsync aws-appsync-ios

您好,我正在使用AWS AppSync作为后端graphQL db。 我正在使用Cognito来管理登录名,用户和身份验证。 我正在使用IAM管理身份规则和来宾用户。

这是我的消毒代码:

let appSyncConfig = try AWSAppSyncClientConfiguration(appSyncServiceConfig: AWSAppSyncServiceConfig(),
    credentialsProvider: AWSMobileClient.default(),
    cacheConfiguration: AWSAppSyncCacheConfiguration())

// Initialize the AWS AppSync client
let appSyncClient = try AWSAppSyncClient(appSyncConfig: appSyncConfig)
appSyncClient.apolloClient?.cacheKeyForObject = { $0["id"] }

注意::由于所有必需的信息都在awsconfiguration.json文件中,因此我使用默认配置

我正在使用cognito的以下功能来注册用户:

AWSCognitoIdentityUserPool.signUp

并进行电话号码验证,完成后,我使用AWSMobileClient登录: AWSMobileClient.default().signIn

问题是:

登录后,所有AppSync查询/更改都可以正常工作,

在任意时间后(通常为5分钟)或在重新启动应用程序后

任何需要授权RETURNS 401(未授权)的AppSync查询/变异。

这个问题一直持续到(我认为)下一次刷新访问/ ID令牌(我们的配置1.5个小时),并且该问题在(5分钟或重新启动)之后再次出现。

1 个答案:

答案 0 :(得分:0)

每当收到未经授权的401时,都应提示用户再次登录。如果这种情况经常发生且出乎意料,则说明SDK中可能存在错误。

随时通过https://github.com/awslabs/aws-mobile-appsync-sdk-ios/issues打开问题,以更好地帮助您调试问题。