Swift - 使用 Amplify 的 AWS Cognito - 如何在登录 swift 后获取令牌?

Tom*_*mer 3 ios swift amazon-cognito aws-amplify

成功登录后,我很难获取用户令牌。我唯一得到的是当前的用户 ID 和用户名,但我无法获取用户令牌。

     func login(userData: RegistrationFields) {
        _ = Amplify.Auth.signIn(username: userData.email.data, password: userData.password.data) {
            [weak self] result in
                switch result {
                case .success(let signInResult):
                    if signInResult.isSignedIn {
                        self?.getCurrentUser()
                        debugPrint("Sign in succeeded")
                    }
                case .failure(let error):
                    debugPrint("Sign in failed \(error)")
                    self?.authStateDelegate?.authState(state: .error(error: error))
                }
            }
    }

   func getCurrentUser() {
        guard let user = Amplify.Auth.getCurrentUser() else {return}
        self.authStateDelegate?.authState(state: .session(user: user))
    }
Run Code Online (Sandbox Code Playgroud)

Jim*_*Jim 6

在登录成功回调中,您可以执行以下操作:

Amplify.Auth.fetchAuthSession { result in
        switch result {
        case .success(let session):
            if session.isSignedIn {
                do {
                    if let cognitoTokenProvider = session as? AuthCognitoTokensProvider {
                        let tokens = try cognitoTokenProvider.getCognitoTokens().get()
                        //tokens.idToken - is ID token. Access and refresh tokens also can be found here
                    }
                } catch {
                    //error
                }
            } else {
                //Not Logged in
            }
        case .failure(let error):
            print("Fetch session failed with error \(error)")
        }
    }
Run Code Online (Sandbox Code Playgroud)