AWS: не удается войти в пул пользователей. - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь поддерживать аутентификацию с несколькими провайдерами без использования amazons AuthUI . А именно Google и пулы пользователей Мне удалось получить учетные данные от Google , но у меня возникли проблемы при входе в пул пользователей .

Я пытаюсь войти в систему явно, используя

user?.getSession("*****", password: "*********", validationData: nil).continueWith(block: { (task) -> Any? in   

В результате возникает ошибка " Неаутентифицированный доступ для этого пула идентификации ".

Однако, если я до попытки входа в пользовательский пул аутентифицируюсь, хотя google У меня получается! Это немного сбивает с толку, так как это вредит всей сути, если я должен войти, чтобы войти. Я должен что-то упустить.

credentialsProvider = AWSCognitoCredentialsProvider(
            regionType: AWSRegionType.EUWest1,
            identityPoolId: Constants.cognitoIdentityPoolId,
            identityProviderManager: customProviderManager)


        let configuration = AWSServiceConfiguration(region: AWSRegionType.EUWest1,
                                                    credentialsProvider: credentialsProvider)

        AWSServiceManager.default().defaultServiceConfiguration = configuration

        let poolConfig =  AWSCognitoIdentityUserPoolConfiguration(clientId: Constants.appClientId,
                                                                       clientSecret: Constants.appClientSecret,
                                                                       poolId: Constants.userPoolId)
        AWSCognitoIdentityUserPool.register(with: configuration,
                                            userPoolConfiguration: poolConfig,
                                            forKey: "userPoolSignInProviderKey")

        pool = AWSCognitoIdentityUserPool(forKey: "userPoolSignInProviderKey")

custom identityProviderManager

func logins() -> AWSTask<NSDictionary> {
        let poolUser = (UIApplication.shared.delegate as! AppDelegate)
            .pool?
            .currentUser()

        if GIDSignIn.sharedInstance().currentUser == nil &&
            poolUser?.isSignedIn == false {

            print("unauthenticated user")
            return AWSTask(result:nil)

        } else if let token = GIDSignIn
            .sharedInstance()
            .currentUser?
            .authentication?
            .idToken {

            print("got google token")

            return AWSTask(result: [AWSIdentityProviderGoogle: token])

        } else if let token = poolUser?
            .getSession()
            .result?
            .idToken?
            .tokenString {

            print("got pool token")

            return AWSTask(result: [AWSIdentityProviderAmazonCognitoIdentity: token])

        } else {
            print("error getting logins")
            return AWSTask(error:NSError(domain: "login", code: -1 , userInfo: ["login" : "No current access token"]))
        }
    }
...