首页 > 解决方案 > AWS MobileHub - 通过 GOOGLE 和 FB 登录后获取用户个人资料详细信息

问题描述

我正在使用适用于 iOS 的 AWS Mobile Hub,并希望通过使用 AWS Cognito 身份池获取用户详细信息。

例如,通过 Google 和 Facebook 登录后,连同 Google 和 FB 提供的密钥,我还需要用户个人资料的详细信息,例如他的电子邮件 ID、个人资料图片。

如果有人可以发布相同的 SWIFT 代码,那就太好了。

标签: amazon-web-servicesswift3aws-cognitofederated-identityaws-mobilehub

解决方案


以下代码片段分别使用 Facebook 和 Google SDK for iOS。

对于脸书:

        import FBSDKCoreKit
        import FBSDKLoginKit

        let imageGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "picture.type(large)"])
        let imageConnection = FBSDKGraphRequestConnection()
        imageConnection.add(imageGraphRequest, completionHandler: { (connection, result, error) in
            guard let imageResult = result as? NSDictionary else  { return}
            if let imageURL = URL(string:(((imageResult.value(forKey: "picture") as AnyObject).value(forKey: "data") as AnyObject).value(forKey: "url") as? String)!) {
                self.imageURL = imageURL
            }
        })
        imageConnection.start()

        let userGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, email"])
        let userConnection = FBSDKGraphRequestConnection()
        userConnection.add(userGraphRequest, completionHandler: { (connection, result, error) in
            guard let userResult = result as? NSDictionary else { return }
                if let userName = userResult.value(forKey: "name")  as? String {
                    self.userName = userName
                }
        })
        userConnection.start()

对于谷歌:

import GoogleSignIn


let googleUser = GIDSignIn.sharedInstance().currentUser
self.userName = googleUser?.profile.name
self.imageURL = googleUser?.profile.imageURL(withDimension: GoogleSignInProviderProfileImageDimension)

推荐阅读