Use AWS SDK
For advanced use cases where Amplify does not provide the functionality you're looking for, you can retrieve the escape hatch to access the underlying SDK.
The escape hatch provides access to the underlying AWSMobileClient
instance.
import AWSCognitoAuthPlugin // Imports the Amplify plugin interface
import AmplifyPlugins // Imports the Amplify plugin interface
Then retrieve the escape hatch with this code:
func getEscapeHatch() { do { let plugin = try Amplify.Auth.getPlugin(for: "awsCognitoAuthPlugin") as! AWSCognitoAuthPlugin guard case let .awsMobileClient(awsmobileclient) = plugin.getEscapeHatch() else { print("Failed to fetch escape hatch") return } print("Fetched escape hatch - \(awsmobileclient)") } catch { print("Error occurred while fetching the escape hatch \(error)") }}
It is not recommended to useAWSMobileClient
credentials apis like getToken
, getAWSCredentials
through the escape hatch object.
You can use the escape hatch to federatedSignIn
with a valid token from other social providers. Find more details here
awsmobileclient.federatedSignIn(providerName: IdentityProvider.apple.rawValue, token: "<APPLE_TOKEN_HERE>") { (userState, error) in if let error = error { print("Error in federatedSignIn: \(error)") return }
guard let userState = userState else { print("userState unexpectedly nil") return } print("federatedSignIn successful: \(userState)")}