Swift - 从 GraphRequest 获取来自 Facebook 的用户电子邮件

Swift - Get user email from Facebook out of GraphRequest

大家好,我正在处理 Facebook 登录。在我的应用程序中,我需要获取 Facebook 用户的电子邮件并将其插入一个可以重复使用的变量中,但我遇到了问题,因为 GraphRequest 的请求结果在此调用之外不可见

GraphRequest(graphPath: _, parameters: _, tokenString: _, version : _, httpMethod: _)

es.

   let request = GraphRequest(graphPath: "me", parameters: ["fields":"email"], tokenString: authToken, version: nil, httpMethod: HTTPMethod(rawValue: "GET"))
   request.start { (connection, result, error) in

        if error != nil { print(error!)}

        else {

             if let result = result as? [String:String], 
                let email: String = result["email"] {

                // "email" is not readable outside this function .. 
                // "email" outside this function is always nil
             }
           }
         }

我该如何解决?

1) 首先,确保你有 permission 来获取用户 email.

2) 然后你可以将它保存到UserDefaultsKeychain 中,你可以根据需要进一步使用它。


这里是Keychain wrapper 可以用来简化

也适用于UserDefaults方式:

let email: String = result["email"] {
 UserDefaults.standard.set(email, forKey: "userEmail") 
}

//...
let email = UserDefaults.standarts.string(forKey: "userEmail")

但要小心通过电子邮件发送敏感数据,许多开发人员建议将其保存到 Keychain 而不是 UserDefaults