Я пытаюсь поддерживать аутентификацию с несколькими провайдерами без использования amazons AuthUI . А именно Google и пулы пользователей
Мне удалось получить учетные данные от Google , но у меня возникли проблемы при входе в пул пользователей .
Я пытаюсь войти в систему явно, используя
user?.getSession("*****", password: "*********", validationData: nil).continueWith(block: { (task) -> Any? in
В результате возникает ошибка " Неаутентифицированный доступ для этого пула идентификации ".
Однако, если я до попытки входа в пользовательский пул аутентифицируюсь, хотя google У меня получается!
Это немного сбивает с толку, так как это вредит всей сути, если я должен войти, чтобы войти. Я должен что-то упустить.
credentialsProvider = AWSCognitoCredentialsProvider(
regionType: AWSRegionType.EUWest1,
identityPoolId: Constants.cognitoIdentityPoolId,
identityProviderManager: customProviderManager)
let configuration = AWSServiceConfiguration(region: AWSRegionType.EUWest1,
credentialsProvider: credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
let poolConfig = AWSCognitoIdentityUserPoolConfiguration(clientId: Constants.appClientId,
clientSecret: Constants.appClientSecret,
poolId: Constants.userPoolId)
AWSCognitoIdentityUserPool.register(with: configuration,
userPoolConfiguration: poolConfig,
forKey: "userPoolSignInProviderKey")
pool = AWSCognitoIdentityUserPool(forKey: "userPoolSignInProviderKey")
custom identityProviderManager
func logins() -> AWSTask<NSDictionary> {
let poolUser = (UIApplication.shared.delegate as! AppDelegate)
.pool?
.currentUser()
if GIDSignIn.sharedInstance().currentUser == nil &&
poolUser?.isSignedIn == false {
print("unauthenticated user")
return AWSTask(result:nil)
} else if let token = GIDSignIn
.sharedInstance()
.currentUser?
.authentication?
.idToken {
print("got google token")
return AWSTask(result: [AWSIdentityProviderGoogle: token])
} else if let token = poolUser?
.getSession()
.result?
.idToken?
.tokenString {
print("got pool token")
return AWSTask(result: [AWSIdentityProviderAmazonCognitoIdentity: token])
} else {
print("error getting logins")
return AWSTask(error:NSError(domain: "login", code: -1 , userInfo: ["login" : "No current access token"]))
}
}