Обновление токена токена AWS Cognito после входа в системуIOS

Программируем под IOS
Ответить
Anonymous
 Обновление токена токена AWS Cognito после входа в систему

Сообщение Anonymous »

Я работаю с aws Cognito в приложении iOS, используя swift . После входа в систему я заметил, что токен не обновляется при вызове credentialsprovider.identityprovider.logins () .

Описание проблемы

У меня есть функция Logincognito (данные :) к входу в систему и установил . После входа в систему я проверяю токен с помощью getLoginStoken () , но он не меняется.

Код: Выделить всё

[AWS: LOG]: Login with Token: xxxxxxxxxxxx
Как вы можете видеть, токен в getLoginStoken () () отличается от токена в logincognito (data :) (

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»