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) 然后你可以将它保存到UserDefaults
或Keychain
中,你可以根据需要进一步使用它。
这里是Keychain
wrapper 可以用来简化
也适用于UserDefaults
方式:
let email: String = result["email"] {
UserDefaults.standard.set(email, forKey: "userEmail")
}
//...
let email = UserDefaults.standarts.string(forKey: "userEmail")
但要小心通过电子邮件发送敏感数据,许多开发人员建议将其保存到 Keychain
而不是 UserDefaults
。
大家好,我正在处理 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) 然后你可以将它保存到UserDefaults
或Keychain
中,你可以根据需要进一步使用它。
这里是Keychain
wrapper 可以用来简化
也适用于UserDefaults
方式:
let email: String = result["email"] {
UserDefaults.standard.set(email, forKey: "userEmail")
}
//...
let email = UserDefaults.standarts.string(forKey: "userEmail")
但要小心通过电子邮件发送敏感数据,许多开发人员建议将其保存到 Keychain
而不是 UserDefaults
。