Описание проблемы
У меня есть функция Logincognito (данныеКод: Выделить всё
[AWS: LOG]: Login with Token: xxxxxxxxxxxx
Код: Выделить всё
Token:Код: Выделить всё
Login with Token:Код: Выделить всё
private func loginCognito(data: AWSConfigData) async throws {
let loginsKey = "cognito-idp.\(data.region).amazonaws.com/\(data.userPoolId)"
let logins = [loginsKey: data.idToken]
printAWS(type: .login, addition: "token", message: "logins")
let identityProviderManager = IdentityProviderManager(loginMaps: logins)
let credentialsProvider = AWSCognitoCredentialsProvider(
regionType: data.regionType,
identityPoolId: data.identityPoolId,
identityProviderManager: identityProviderManager
)
credentialsProvider.clearCredentials()
self.awsConfigData = data
return try await withCheckedThrowingContinuation { continuation in
credentialsProvider.identityProvider.logins().continueWith { task in
if let result = task.result,
let token = result[loginsKey] as? String {
printAWS(addition: "Login with Token:", message: "\(token)")
let configuration = AWSServiceConfiguration(
region: data.regionType,
credentialsProvider: credentialsProvider
)
AWSServiceManager.default().defaultServiceConfiguration = configuration
try? await getLoginsToken()
return continuation.resume(returning: ())
} else if let error = task.error {
return continuation.resume(throwing: error)
} else {
let error = NSError(domain: "S3Error", code: -1, userInfo: [NSLocalizedDescriptionKey: "Get login error"])
return continuation.resume(throwing: error)
}
}
}
}
Код: Выделить всё
private func getLoginsToken() async throws -> String {
guard let configuration = AWSServiceManager.default().defaultServiceConfiguration,
let credentialsProvider = configuration.credentialsProvider as? AWSCognitoCredentialsProvider,
let awsConfigData else {
throw NSError(domain: "S3Error", code: -1, userInfo: [NSLocalizedDescriptionKey: "Can't get credentialsProvider"])
}
return try await withCheckedThrowingContinuation { continuation in
credentialsProvider.identityProvider.logins().continueWith { task in
let loginsKey = "cognito-idp.\(awsConfigData.region).amazonaws.com/\(awsConfigData.userPoolId)"
if let result = task.result,
let token = result[loginsKey] as? String {
printAWS(addition: "Token:", message: "\(token)")
return continuation.resume(returning: token)
} else if let error = task.error {
return continuation.resume(throwing: error)
} else {
let error = NSError(domain: "S3Error", code: -1, userInfo: [NSLocalizedDescriptionKey: "Get login error"])
return continuation.resume(throwing: error)
}
}
}
}
Вопросы
Почему токен не обновляется правильно после входа? clearCredentials () или другой метод для правильного обновления токена?>Подробнее здесь: https://stackoverflow.com/questions/795 ... fter-login
Мобильная версия