В нашем приложении мы используем AWSCognitoIdentityProvider изначально для Cognito Authentication. Мы можем успешно зарегистрироваться, войти, сбросить пароль и т. Д., Но я изо всех сил пытаюсь найти полный пример, чтобы помочь мне настроить аутентификацию через социальных провайдеров (например, Facebook, Google). В моем Cognito я успешно соединил Google с моим пулом пользователей и, используя веб-URL, смог успешно создать для них «подпрограмму» Cognito, но надеюсь, что смогу получить некоторую помощь в настройке его в Swift.
В моем Cognito я успешно соединил google с моим пулом пользователей и, используя веб-URL, могу успешно создать для них подпрограмму cognito, но надеюсь, что смогу получить некоторую помощь в ее настройке. в пределах Свифта.
Это из моего AppDelegate.swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// setup logging
AWSDDLog.sharedInstance.logLevel = .verbose
AWSDDLog.add(AWSDDTTYLogger.sharedInstance)
// setup cognito config
self.cognitoConfig = CognitoConfig()
// setup cognito
setupCognitoUserPool()
return true
}
func setupCognitoUserPool() {
let clientId:String = self.cognitoConfig!.getClientId()
let poolId:String = self.cognitoConfig!.getPoolId()
let clientSecret:String = self.cognitoConfig!.getClientSecret()
let region:AWSRegionType = self.cognitoConfig!.getRegion()
let serviceConfiguration:AWSServiceConfiguration = AWSServiceConfiguration(region: region, credentialsProvider: nil)
let cognitoConfiguration:AWSCognitoIdentityUserPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: clientId, clientSecret: clientSecret, poolId: poolId)
AWSCognitoIdentityUserPool.register(with: serviceConfiguration, userPoolConfiguration: cognitoConfiguration, forKey: userPoolID)
let pool:AWSCognitoIdentityUserPool = AppDelegate.defaultUserPool()
pool.delegate = self
}
Ниже приведен код, который у меня есть для аутентификации на основе электронной почты, и я ищу что-то похожее для FB / Google:
@IBAction func loginPressed(_ sender: AnyObject) {
let username:String = usernameInput?.text ?? "No username found"
let password:String = passwordInput?.text ?? "No password found"
// some code to check if username/password fields are empty. Throw error.
user = AppDelegate.defaultUserPool().currentUser()
self.user?.getSession(username, password: password, validationData: nil).continueWith {(task) -> AnyObject? in
DispatchQueue.main.async (execute: {
let userSessionStatus = self.user?.isSignedIn
if userSessionStatus == true {
// take the user to welcome screen view controller
} else {
// Login failed. Ask the user to retry
}
})
return nil
}
}