Swift AWS Cognito error: делегат аутентификации не установлен - PullRequest
0 голосов
/ 19 ноября 2018

Я занимаюсь быстрым разработкой приложения и использую мобильные сервисы AWS для аутентификации, а AWS Lambda - для некоторой внутренней обработки.У меня все работало нормально, и однажды (после выхода из приложения в течение месяца или около того) оно начало выдавать эту ошибку:

 GetId failed. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityProviderErrorDomain Code=-1000 "Authentication delegate not set" UserInfo {NSLocalizedDescription=Authentication delegate not set}]
 Unable to refresh. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityProviderErrorDomain Code=-1000 "Authentication delegate not set"

Это убивает меня, потому что оно уже работало.Что могло измениться?

В appDelegate у меня есть:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {

        // Uncomment to turn on logging, look for "Welcome to AWS!" to confirm success
        AWSDDLog.add(AWSDDTTYLogger.sharedInstance)
        AWSDDLog.sharedInstance.logLevel = .error

        // Instantiate AWSMobileClient to get AWS user credentials
        return AWSMobileClient.sharedInstance().interceptApplication(application, didFinishLaunchingWithOptions:launchOptions)
    }

Это на самом деле выдает ошибку, прежде чем я сделаю какой-либо вызов, поэтому я думаю, что приведенные выше строки могут вызывать проблему?

Для входа в систему я делаю в главном viewController следующее:

override func viewDidLoad() {
        super.viewDidLoad()

        if !AWSSignInManager.sharedInstance().isLoggedIn {
            presentAuthUIViewController()
        }
        else{
            getCredentials()
        } 
        ...
        }

func presentAuthUIViewController() {
        let config = AWSAuthUIConfiguration()
        config.enableUserPoolsUI = true
        config.backgroundColor = UIColor.white
        config.logoImage = #imageLiteral(resourceName: "logoQ")
        config.isBackgroundColorFullScreen = true
        config.canCancel = true

        AWSAuthUIViewController.presentViewController(
            with: self.navigationController!,
            configuration: config, completionHandler: { (provider: 
            AWSSignInProvider, error: Error?) in
                if error == nil {
                    self.getCredentials()
                } else {
                    // end user faced error while loggin in, take any required action here.
                }
        })
    }

    func getCredentials() {
        let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil)
        let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "id",
                                                                            clientSecret: "secret",
                                                                            poolId: "id")
        AWSCognitoIdentityUserPool.register(with: serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "key")
        let pool = AWSCognitoIdentityUserPool(forKey: "key")
        if let username = pool.currentUser()?.username {
            userName = username
        }

Он входит в систему, и я получаю имя пользователя.

Любые советы?Я следовал некоторым инструкциям в других постах, но они не работали, плюс то, что меня больше всего смущает, это то, что оно работало!

Заранее спасибо

1 Ответ

0 голосов
/ 07 декабря 2018

Итак, я не уверен на 100% в том, что происходит, но, насколько я понимаю, возникла проблема с учетными данными пользователя в пуле пользователей.Я сбросил пароль и все снова заработало нормально!

Мне нужно больше подробностей, просто спросите, и если кто-то поймет, лучше сообщите мне ..

...