获取用户唯一标识符 - iOS + 放大
Get User Unique Identifier - iOS + Amplify
获取用户信息的正确方法是什么?这是 Cognito Auth 的流程:
用户登录 -> Lambda post 确认使用电子邮件作为唯一标识符在 Dynamo 中创建一个 1:1 用户。
如何获取当前登录用户的唯一标识符?如果我这样做,我会得到一个奇怪的 ID:Amplify.Auth.getCurrentUser()
我会得到类似的东西:
Optional(AmplifyPlugins.AWSAuthUser(username: "201cdc94-48cc-48a9-9393-9025f13b6fb3", userId: "201cdc94-48cc-48a9-9393-9025f13b6fb3"))
当我尝试时:
Amplify.Auth.fetchUserAttributes() { result in
switch result {
case .success(let attributes):
print("User attributes - \(attributes)")
case .failure(let error):
print("Fetching user attributes failed with error \(error)")
}
}
我在那里看到了电子邮件,如何获取该电子邮件?我试过 attributes.email
但没用
获取当前登录用户唯一标识符的正确方法是什么?
编辑:下面是我想出的一个变体,但我觉得它是错误的,不可能这么难……有什么想法吗?
func fetchAttributes() -> String {
var userId:String = ""
Amplify.Auth.fetchUserAttributes() { result in
switch result {
case .success(let attributes):
for x in attributes {
if x.key.rawValue == "email" {
print(x.value)
userId = x.value
}
}
case .failure(let error):
print("Fetching user attributes failed with error \(error)")
}
}
return userId
}
像往常一样,Amplify Support 为空...我最终自己解决了这个问题。因此,出于安全原因,Amplify 似乎没有提供唯一标识符。
An intentional decision with Amplify Auth was to avoid any public
methods exposing credentials or manipulating them.
所以我决定不使用唯一标识符创建 DynamoDB,而是使用可以像这样获取的子 ID 创建它:
let usersub = try identityProvider.getUserSub().get()
更多here
获取用户信息的正确方法是什么?这是 Cognito Auth 的流程:
用户登录 -> Lambda post 确认使用电子邮件作为唯一标识符在 Dynamo 中创建一个 1:1 用户。
如何获取当前登录用户的唯一标识符?如果我这样做,我会得到一个奇怪的 ID:Amplify.Auth.getCurrentUser()
我会得到类似的东西:
Optional(AmplifyPlugins.AWSAuthUser(username: "201cdc94-48cc-48a9-9393-9025f13b6fb3", userId: "201cdc94-48cc-48a9-9393-9025f13b6fb3"))
当我尝试时:
Amplify.Auth.fetchUserAttributes() { result in
switch result {
case .success(let attributes):
print("User attributes - \(attributes)")
case .failure(let error):
print("Fetching user attributes failed with error \(error)")
}
}
我在那里看到了电子邮件,如何获取该电子邮件?我试过 attributes.email
但没用
获取当前登录用户唯一标识符的正确方法是什么?
编辑:下面是我想出的一个变体,但我觉得它是错误的,不可能这么难……有什么想法吗?
func fetchAttributes() -> String {
var userId:String = ""
Amplify.Auth.fetchUserAttributes() { result in
switch result {
case .success(let attributes):
for x in attributes {
if x.key.rawValue == "email" {
print(x.value)
userId = x.value
}
}
case .failure(let error):
print("Fetching user attributes failed with error \(error)")
}
}
return userId
}
像往常一样,Amplify Support 为空...我最终自己解决了这个问题。因此,出于安全原因,Amplify 似乎没有提供唯一标识符。
An intentional decision with Amplify Auth was to avoid any public methods exposing credentials or manipulating them.
所以我决定不使用唯一标识符创建 DynamoDB,而是使用可以像这样获取的子 ID 创建它:
let usersub = try identityProvider.getUserSub().get()
更多here