Как настроить AWS Cognito для входа в социальную сеть с помощью swift без использования AmplifyCLI? - PullRequest
2 голосов
/ 31 октября 2019

В нашем приложении мы используем 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
            }
        }
...