未使用联合登录在 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.
进行社交登录时才会发生这种情况
[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.
进行社交登录时才会发生这种情况