是否可以不设置身份验证委托而使用用户池和认知身份登录?

时间:2018-11-21 21:58:27

标签: ios swift amazon-cognito

我想使用Facebook,Google和用户池(电子邮件)提供具有联合身份的登录名。在Cognito用户池注册成功后,我无法获取identityId。错误是“未设置身份验证委托”。 我不想将委托设置为用户池。我设法注册了不需要它,我只想获取identityId。

这可以通过设置委托来完成吗?我在做错什么吗?

func setupAWS(){
    loginProvider = LoginProvider()
    userPoolConfig()
    credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "identityPoolId", identityProviderManager: userPool)
    let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider)
    AWSServiceManager.default().defaultServiceConfiguration = configuration

}

func userPoolConfig(){
    let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider)
    let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "clientid", clientSecret: "clientsecret", poolId: "poolid")
    AWSCognitoIdentityUserPool.register(with: configuration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool")
    userPool = AWSCognitoIdentityUserPool(forKey: "UserPool")
}

//logins from LoginProvider
func logins() -> AWSTask<NSDictionary> {
    switch type {
    case .facebook:
        if let token = AccessToken.current?.authenticationToken {
            return AWSTask(result: [AWSIdentityProviderFacebook:token])
        }
        return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"]))
    default:
        return userService.userPool!.logins()
    }
}

//After signup
func verificationCodeProvided(code: String){
    presenter!.user!.confirmSignUp(code).continueWith(block: { (response) -> Any? in
        if response.error != nil {
            //fail
        } else {
            print("Signup succeeded")
            print("Id: \(self.presenter?.userService.credentialsProvider?.identityId)") //returns nil

            self.presenter!.setUser()
        }
        return nil
    })
}

//trying to get identity id
func setUser(){        
    self.userService.credentialsProvider!.getIdentityId().continueWith(block: { (task) -> Any? in
        if (task.error != nil) {
            print("Error: " + task.error!.localizedDescription) // prints "Authentication delegate not set" for user pool login
        }
        else {
            let cognitoId = task.result!
            print("Cognito id: \(cognitoId)") //Works for Facebook
        }
        return nil
    })
}

0 个答案:

没有答案
相关问题