Как исправить ошибку времени выполнения domainnsposixerrordomain code13, которой отказано в разрешении на выполнение в коде AWSCognito?

Я получаю сообщение об ошибке выполнения:

[NetworkInfo] Запрос уровня сигнала вернул ошибку: домен ошибки = NSPOSIXErrorDomain Code = 13 «Permission denied», дескриптор:

в моем коде, где объявлена ​​переменная «задача». Строку, в которой возникает ошибка, я пометил комментарием.

let serviceConfiguration: AWSServiceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil)

//create a pool
let configuration: AWSCognitoIdentityUserPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "6n3mb6nu0ls9ttfapkl69uuvd3", clientSecret: "7vlgp2ip3ihov4on7n0v4sti88sj6tfsobqlop6qu5t3db07bo6", poolId: "us-east-1_d0Y5gS66r")

AWSCognitoIdentityUserPool.register(with: serviceConfiguration, userPoolConfiguration: configuration, forKey: "AlarmMusic")
pool = AWSCognitoIdentityUserPool(forKey: "AlarmMusic")

let alertMessage = "Please register in order to be able to use this app:"

let alertController = UIAlertController(title: "Register", message: alertMessage, preferredStyle: .alert)

alertController.addTextField(configurationHandler: nil)
alertController.addTextField(configurationHandler: nil)
alertController.addTextField(configurationHandler: nil)

let actionOK = UIAlertAction(title: "OK", style: .cancel) {
    action in

    var attributes = [AWSCognitoIdentityUserAttributeType]()

    let email: AWSCognitoIdentityUserAttributeType = AWSCognitoIdentityUserAttributeType(name: "email", value: alertController.textFields?[2].text ?? "[email protected]")

    attributes.append(email)

    let task: AWSTask<AWSCognitoIdentityUserPoolSignUpResponse> = self.pool.signUp(alertController.textFields?[0].text ?? "dbrower", password: alertController.textFields?[1].text ?? "Password@1989", userAttributes: attributes, validationData: nil).continueOnSuccessWith( block: {_ in return nil }) as! AWSTask<AWSCognitoIdentityUserPoolSignUpResponse> // ERROR OCCURS HERE!

    print("task=", task)

    let signUpResponse: AWSCognitoIdentityUserPoolSignUpResponse? = task.result

    print("signUpResponse=", signUpResponse as Any)

    let user: AWSCognitoIdentityUser? = signUpResponse?.user

    print("user=", user as Any)

}

alertController.addAction(actionOK)

self.present(alertController, animated: true, completion: nil)

Вот результаты в окне отладки операторов печати:

задача =

signUpResponse = ноль

пользователь = ноль

Я проверил свой пул пользователей в AWS Cognito Console. Все проверено. Я предоставил всю необходимую информацию для пула пользователей.

Вот скриншот бассейна:

введите здесь описание изображения

В чем причина этой ошибки и что мне нужно выяснить, чтобы ее исправить?


person Daniel Brower    schedule 26.05.2019    source источник
comment
Проверьте это. Вы можете спокойно игнорировать это. Я давно вижу это в одном из своих проектов, и это не дает никакого эффекта.   -  person Don    schedule 26.05.2019
comment
@ Дон Да. Я обнаружил, что в разных местах говорится, что сообщение об ошибке - это своего рода ненужная реликвия. Однако я получаю ноль для этого оператора печати для пользователя. Я также проверил в AWS Cognito Console, и он не показывает, что пользователь был создан, поэтому я подумал, что, возможно, сообщение об ошибке является допустимым.   -  person Daniel Brower    schedule 26.05.2019
comment
@Don Я проверил и обнаружил, что даже если объект задачи создан, свойство результата объекта задачи равно нулю.   -  person Daniel Brower    schedule 26.05.2019
comment
Извините, я не читал это внимательно. Я только что узнал сообщение об ошибке и ответил. Если вы используете реальные данные (clientId, clientSecret и т. Д.), Вам следует удалить этот вопрос и открыть новый с фиктивными данными.   -  person Don    schedule 26.05.2019
comment
@ Дон, я уверен, что ты внимательно прочитал это в первый раз. Я добавил операторы печати и результаты печати, когда редактировал их после того, как вы сделали свой последний комментарий.   -  person Daniel Brower    schedule 26.05.2019
comment
@Don Блочный аргумент метода continueOnSuccessWith никогда не выполняется. Я только что проверил, добавив в этот блок операторы печати.   -  person Daniel Brower    schedule 26.05.2019
comment
@ Дэниел Брауэр нашел исправление? У меня такая же ошибка   -  person Vi.    schedule 18.07.2019
comment
@Vi. Извините. Я даже не помню этой проблемы. Это было так давно.   -  person Daniel Brower    schedule 18.07.2019


Ответы (1)


Вот небольшой пример того, как получить пользователя из Cognito.

private func registerNewUser() {
  let userPool = ...
  let email = ...
  let password = ...
  let emailAttribute = AWSCognitoIdentityUserAttributeType(name: "email", value: email)
  let attributes:[AWSCognitoIdentityUserAttributeType] = [emailAttribute]

  userPool.signUp(email, password: password, userAttributes: attributes, validationData: nil).continueWith { (response) -> Any? in
    if response.error != nil {
      DispatchQueue.main.async {
        let alert = UIAlertController(title: "Error", message: (response.error! as NSError).userInfo["message"] as? String, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler:nil))
        self.present(alert, animated: true, completion: nil)
      }
    } else {
      self.user = response.result!.user
    }
    return nil
  }
}
person Don    schedule 26.05.2019