我是个新手,希望有人能帮我. bearerToken函数更新用于getMedicalData()函数的idToken变量 问题是getMedicalData()函数在idToken的值被bearerToken()更新之前运行.这会导致getMedicalData()使用一个空的idToken变量. 如何同步它,以便getMedicalData()在运行完所有bearerToken()之后运行.
getMedicalData()和bearerToken()的主要功能:
func login(username: String, password: String) {
_ = Amplify.Auth.signIn(
username: username,
password: password
) { [weak self] result in
switch result {
case .success(let signInResult):
print(SignInResult.self)
if signInResult.isSignedIn {
//calling the two functions
TokenManager.shared.bearerToken()
getMedicalData()
DispatchQueue.main.async {
self?.getCurrentAuthUser()
}
}
case .failure(let error):
print("Login error:", error)
}
}
}
bearerToken函数:
func bearerToken() {
_ = Amplify.Auth.fetchAuthSession { result in
switch result {
case .success(let session):
if(session.isSignedIn) {
if let sess = session as? AWSAuthCognitoSession {
let result = sess.getCognitoTokens()
switch result {
case .success(let tokens):
self.idToken = String(tokens.idToken)
self.refreshToken = tokens.refreshToken
case .failure(let error):
print("Fetch user tokens failed with error \(error)")
}
}
}
case .failure(let error):
print("Fetch session failed with error \(error)")
}
}
}