79547613

Date: 2025-04-01 02:35:07
Score: 5
Natty:
Report link

Updated Question (Example)

I've made some minor updates to my code, and it seems to be working now. However, I wanted to ask if there's a better way to handle the login configuration for AWSCognitoCredentialsProvider.

Here’s my updated loginCognito function:

private func loginCognito(data: AWSConfigData) {  
    let loginsKey = "cognito-idp.\(data.region).amazonaws.com/\(data.userPoolId)"  
    let logins = [loginsKey: data.idToken]    

    self.awsConfigData = data  
    printAWS(addition: "Login with Token:", message: "\(data.idToken)")    

    // If defaultServiceConfiguration is already set, update loginMaps  
    if let existingCredentialsProvider = AWSServiceManager.default()?.defaultServiceConfiguration?.credentialsProvider as? AWSCognitoCredentialsProvider,  
       let existingIdentityProviderManager = existingCredentialsProvider.identityProvider.identityProviderManager as? IdentityProviderManager {  
        existingIdentityProviderManager.setLogins(loginMaps: logins)  
        return  
    }    

    let identityProviderManager = IdentityProviderManager(loginMaps: logins)  
    let credentialsProvider = AWSCognitoCredentialsProvider(  
        regionType: data.regionType,  
        identityPoolId: data.identityPoolId,  
        identityProviderManager: identityProviderManager  
    )    

    // Set AWS default configuration  
    let configuration = AWSServiceConfiguration(  
        region: data.regionType,  
        credentialsProvider: credentialsProvider  
    )    

    AWSServiceManager.default()?.defaultServiceConfiguration = configuration  
}

And my IdentityProviderManager:

private class IdentityProviderManager: NSObject, AWSIdentityProviderManager {  
    private var loginMaps: [String: String]    

    init(loginMaps: [String: String]) {  
        self.loginMaps = loginMaps  
    }    

    func setLogins(loginMaps: [String: String]) {  
        self.loginMaps = loginMaps  
    }    

    func logins() -> AWSTask<NSDictionary> {  
        return AWSTask(result: loginMaps as NSDictionary)  
    }  
}

My Question:

Is there a better approach to updating logins dynamically in AWSCognitoCredentialsProvider?
Would it be more efficient to manage this differently, or is this the best practice?

Thanks in advance!

Reasons:
  • Blacklisted phrase (0.5): Thanks
  • RegEx Blacklisted phrase (3): Thanks in advance
  • Long answer (-1):
  • Has code block (-0.5):
  • Ends in question mark (2):
  • Self-answer (0.5):
  • Low reputation (0.5):
Posted by: Nguyễn Đức Thành