Могу ли я войти в систему с помощью пула пользователей и идентификатора Cognito без настройки делегата аутентификации? - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу предложить войти с федеративным удостоверением, используя Facebook, Google и пул пользователей (электронная почта).У меня проблема с получением identityId после успешной регистрации в пуле cognito.Ошибка «Делегат аутентификации не установлен».Я не хочу устанавливать делегата в пул пользователей.Мне удалось зарегистрироваться без необходимости, и я просто хочу получить identityId.

Можно ли это сделать с помощью установки делегата?Я что-то не так делаю?

func setupAWS(){
    loginProvider = LoginProvider()
    userPoolConfig()
    credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "identityPoolId", identityProviderManager: userPool)
    let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider)
    AWSServiceManager.default().defaultServiceConfiguration = configuration

}

func userPoolConfig(){
    let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider)
    let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "clientid", clientSecret: "clientsecret", poolId: "poolid")
    AWSCognitoIdentityUserPool.register(with: configuration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool")
    userPool = AWSCognitoIdentityUserPool(forKey: "UserPool")
}

//logins from LoginProvider
func logins() -> AWSTask<NSDictionary> {
    switch type {
    case .facebook:
        if let token = AccessToken.current?.authenticationToken {
            return AWSTask(result: [AWSIdentityProviderFacebook:token])
        }
        return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"]))
    default:
        return userService.userPool!.logins()
    }
}

//After signup
func verificationCodeProvided(code: String){
    presenter!.user!.confirmSignUp(code).continueWith(block: { (response) -> Any? in
        if response.error != nil {
            //fail
        } else {
            print("Signup succeeded")
            print("Id: \(self.presenter?.userService.credentialsProvider?.identityId)") //returns nil

            self.presenter!.setUser()
        }
        return nil
    })
}

//trying to get identity id
func setUser(){        
    self.userService.credentialsProvider!.getIdentityId().continueWith(block: { (task) -> Any? in
        if (task.error != nil) {
            print("Error: " + task.error!.localizedDescription) // prints "Authentication delegate not set" for user pool login
        }
        else {
            let cognitoId = task.result!
            print("Cognito id: \(cognitoId)") //Works for Facebook
        }
        return nil
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...