Токен Cognito истекает, когда приложение находится в фоновом режиме - PullRequest
0 голосов
/ 07 мая 2019

AWSers, Я использую AWS для усиления (Cognito) и хранилища S3 в моем приложении IOS swift. Однако у меня возникают проблемы с загрузкой файлов на S3, если приложение какое-то время находилось в фоновом режиме, мое приложение не может получить идентификационный идентификатор и, следовательно, не может завершить загрузку.

Воспроизвести Шаги для воспроизведения поведения: Если пользователь должен был войти в систему и дать приложению подождать в фоновом режиме в течение нескольких минут (например, 5 минут), пользователь теперь не может загрузить файлы на S3, получая следующую ошибку:

Error: Obtaining an identity id in another thread failed or didn't complete within 5 seconds.
Error: The operation couldn’t be completed. (com.amazonaws.AWSCognitoIdentityErrorDomain error 8.)

В результате пользователю теперь необходимо выйти и снова войти в систему, чтобы они могли продолжить загрузку видеофайлов в s3.

Вот что у меня есть в AppDelegate.swift:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // AWS Id config
        let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,identityPoolId:config_identityID)
        let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
        AWSServiceManager.default().defaultServiceConfiguration = configuration

Я использую AWS Drop-in Auth для входа в систему:

    func showSignIn() {
        // Drop in Auth that handles sign in for users
        AWSMobileClient.sharedInstance()
            .showSignIn(navigationController: self.navigationController!,
                        signInUIOptions: SignInUIOptions(
                            canCancel: false,
                            logoImage: UIImage(named: "PMA background"),
                            backgroundColor: UIColor.black)) { (signInState, error) in
                                //handle results and errors

                                if let signInState = signInState {
                                    print("logged in!", signInState)
                                    self.getCredentials()

                                } else {
                                    print("error logging in: \(error!.localizedDescription)")
                                }
        }
    }

Я ожидаю, что мобильный клиент AWS и AWStransferUtility будут использовать мой токен обновления для обновления моего токена доступа, но это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...