我正在使用Firebase实现FBSDK登录按钮,并尝试从graphRequest中检索电子邮件信息,但由于某种原因,它不会打印电子邮件。以下是我的代码
override func viewDidLoad() {
super.viewDidLoad()
self.FBLoginButton.delegate = self
self.FBLoginButton.readPermissions = ["email"]
FBSDKProfile.enableUpdates(onAccessTokenChange: true)
}
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if let error = error {
print(error.localizedDescription)
return
}
let credential = FIRFacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
FIRAuth.auth()?.signIn(with: credential) { (user, error) in
if let error = error {
print(error.localizedDescription)
return
}
print("User \(user)")
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"])
graphRequest.start(completionHandler: { (connection, result, err) in
if err != nil {
print(err!)
return
}
print(result)
})
self.performSegue(withIdentifier: "ToFirstView", sender: self)
}
}
打印结果显示,没有打印电子邮件:
Optional({
id = 1233455667;
name = "the name";
})
我的AppDelegate是这样的:
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
app,
open: url as URL!,
sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation]
)
}
我的目的是检索名称和电子邮件,以便在Firebase上填充我的数据库。我采用了叠加溢出时显示的大多数解决方案,但似乎对我来说不太适用。感谢有人能指出我正确的方向。