未使用联合登录在 AWS Amplify 用户池中创建用户

User is not created in AWS Amplify User Pool using federated sign in

[iOS15、SwiftUI、AWS Amplify]

我正在使用

SignInWithAppleButton(
    .signIn,
    onRequest: configure,
    onCompletion: handle
)
    .signInWithAppleButtonStyle(.white)
    .frame(height: 44.0)
    .clipShape(Capsule(style: .continuous)
)

调用一个 handle 函数,调用此 signIn 函数:

func signIn(with identityToken: String) {
    guard
        let plugin = try? Amplify.Auth.getPlugin(for: AWSCognitoAuthPlugin().key),
        let authPlugin = plugin as? AWSCognitoAuthPlugin,
        case .awsMobileClient(let client) = authPlugin.getEscapeHatch()
    else {
        return
    }
            
    client.federatedSignIn(
        providerName: "signInWithApple",
        token: identityToken) { state, error in
            if let unwrappedError = error {
                print("Error in federatedSignIn: \(unwrappedError)")
                return
            }
            guard let unwrappedState = state else {
                print("userState unexpectedly nil")
                return
            }
            print("Successful federated sign in:", unwrappedState)
        }
    }
}

控制台打印 Successful federated sign in: signedIn,但是当我在 AWS Amplify Admin UI 或 AWS Cognito 中检查用户池时,它是空的。

AWS 管理员 UI:

AWS Cognito -> 用户池 -> 联合身份:

知道我做错了什么吗?

调试 HTTP 流量,我发现 client.federatedSignIn() 没有返回一条错误消息。该错误表明身份令牌与提供者不匹配,因此我决定尝试使用几种不同的提供者名称选项,有效的是:appleid.apple.com.

    client.federatedSignIn(
        providerName: "appleid.apple.com",
        token: identityToken)

import AWSMobileClientXCF
...
    client.federatedSignIn(
        providerName: IdentityProvider.apple.rawValue,
        token: identityToken)

通过进一步研究,我还发现在使用联合登录时,用户池中没有创建用户。 仅当使用凭据登录或使用托管 UI.

进行社交登录时才会发生这种情况