Я использую AWS Cognito, интегрированный с приложением iOS через MobileHub для входа через Facebook. Все работает нормально, пока я не выхожу из существующего идентификатора и не пытаюсь войти в систему с другой учетной записью FB (или даже с тем же).
В этом случае я получаю эту ошибку, каждый раз, когда я называю любой AWS Lambda:AWS Cognito iOS. Ошибка без аутентификации после выхода из системы
AWSiOSSDK v2.4.9 [Error] AWSCredentialsProvider.m линия: 577.
[AWSCognitoCredentialsProvider credentials].
Невозможно обновить. Ошибка [Error Domain = com.amazonaws.AWSCognitoIdentityErrorDomain Code = 8 "(нуль)" UserInfo = {__ тип = NotAuthorizedException, сообщение = Unauthenticated доступ не поддерживается для этого удостоверения пула.}]
Но если прекратить и перезапустите приложение, все снова работает правильно.
Эта ошибка возникает here:
От чтения AWS SDK кода я вижу, что это происходит потому, что личность Cognito не получает логины от учетных данных поставщика here:
Я предполагаю, что это, как ожидается, так как я вышли из системы. Но проблема в том, что даже после входа в FB AWS все еще считает меня несанкционированным. Из похожих вопросов о StackOverflow я вижу, что в прошлом люди устанавливали логин регистрации на AWSCognitoCredentialsProvider вручную. Но теперь это свойство устарело, а другие аналогичные свойства - только для чтения.
Вот моя установка AWS в методе AppDelegate didFinishLaunchingWithOptions:
let cred = AWSCognitoCredentialsProvider(regionType: .euWest1, identityPoolId: "POOLID")
let config = AWSServiceConfiguration(region: .euWest1, credentialsProvider: cred)
AWSServiceManager.default().defaultServiceConfiguration = config
if let config = config {
config.timeoutIntervalForRequest = 30
config.timeoutIntervalForResource = 30
config.maxRetryCount = 3
AWSLambdaInvoker.register(with: config, forKey: "key")
}
let mapperConfiguration = AWSDynamoDBObjectMapperConfiguration()
mapperConfiguration.saveBehavior = .updateSkipNullAttributes
AWSDynamoDBObjectMapper.register(with: config!, objectMapperConfiguration: mapperConfiguration, forKey: "updateObjectMapper")
А вот выход из системы код:
AWSIdentityManager.defaultIdentityManager().logout { (result, error) in
if let cp = AWSServiceManager.default().defaultServiceConfiguration.credentialsProvider as? AWSCognitoCredentialsProvider {
cp.clearKeychain()
}
// Open login screen
}
Пожалуйста, обратите внимание, что я попытался как очищающий брелка и не делать. Результат тот же.
Я очень благодарен за любую помощь!
С уважением, Alex
Я использую тот же AWSIdentityManager, выполняющий выход из системы, и у вас есть некоторые проблемы, подобные вам. Он показывает '' 'UserInfo = {__ type = NotAuthorizedException, message = Unauthenticated access не поддерживается для этого пула идентификаторов.}' '' Но все же выход из системы не знаю почему. Любые решения? –
Какая услуга дает вам эту ошибку? Некоторые AWSLambda? Или AWSIdentityManager сам? –
AWSIdentityManager. И он имеет дело с пользовательским логином, как шармом, но когда я выхожу из системы с помощью '[[AWSIdentityManager defaultIdentityManager] logoutWithCompletionHandler:^(результат ID, ошибка NSError *)' Появилась ошибка, о которой я упоминал выше. Мне нужно выполнить другую работу после обнаружения выхода без ошибок. Теперь я использую '[[AWSIdentityManager defaultIdentityManager] isLoggedin]' вместо этого выполнять другое задание, когда обнаруживаю, что пользователь выходит из обработчика выше. –