Я хочу предложить войти с федеративным удостоверением, используя 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
})
}