【问题标题】:Get User Unique Identifier - iOS + Amplify获取用户唯一标识符 - iOS + Amplify
【发布时间】:2021-10-06 23:33:39
【问题描述】:

获取用户信息的正确方法是什么?这是 Cognito Auth 的流程:

用户登录 -> Lambda 发布确认使用电子邮件作为唯一标识符在 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
}

【问题讨论】:

    标签: amazon-web-services aws-amplify aws-amplify-cli


    【解决方案1】:

    像往常一样,Amplify Support 是无效的……我最终自己解决了这个问题。因此,出于安全原因,Amplify 似乎没有提供唯一标识符。

    Amplify Auth 的一个有意决定是避免任何公开 暴露凭据或操纵凭据的方法。

    所以我决定不使用唯一标识符创建 DynamoDB,而是使用可以像这样获取的子 ID 创建它:

    let usersub = try identityProvider.getUserSub().get()
    

    更多here

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多