2016-04-15 54 views
2

我能够使用基本的SDK程序成功验证Facebook的登录身份,但在尝试使用Firebase进行身份验证时遇到一些混淆。我已经通过文件读取和复制和粘贴代码,但我仍然得到读取带有Firebase问题的facebookLogin.logInWithReadPermissions

'logInWithReadPermissions(_:handler:)' is deprecated: use logInWithReadPermissions:fromViewController:handler: instead facebookLogin.logInWithReadPermissions(["email"], handler: instead. 

1警告)这是什么警告表示,如何解决? 2)使用电子邮件和密码登录后,您会看到已创建的注册用户,但我如何知道并查看用户是否已在Firebase数据库中使用Facebook身份验证进行注册?

感谢您的任何帮助或方向!

import UIKit 
import Firebase 
import FBSDKCoreKit 
import FBSDKLoginKit 


class ViewController: UIViewController, FBSDKLoginButtonDelegate { 

    let loginButton: FBSDKLoginButton = { 
     let button = FBSDKLoginButton() 
     button.readPermissions = ["email"] 
     return button 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.addSubview(loginButton) 
     loginButton.center = view.center 
     loginButton.delegate = self 

     let ref = Firebase(url: "https://my-app.firebaseio.com") 
     let facebookLogin = FBSDKLoginManager() 

     facebookLogin.logInWithReadPermissions(["email"], handler: { 
      (facebookResult, facebookError) -> Void in 
      if facebookError != nil { 
       print("Facebook login failed. Error \(facebookError)") 
      } else if facebookResult.isCancelled { 
       print("Facebook login was cancelled.") 
      } else { 
       let accessToken = FBSDKAccessToken.currentAccessToken().tokenString 
       ref.authWithOAuthProvider("facebook", token: accessToken, 
        withCompletionBlock: { error, authData in 
         if error != nil { 
          print("Login failed. \(error)") 
         } else { 
          print("Logged in! \(authData)") 
         } 
       }) 
      } 
     }) 

    } 


    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
     if error == nil { 
      print("completed login") 
      self.performSegueWithIdentifier("showNew", sender: self) 
     } 

     else { 
      print(error.localizedDescription) 
     } 
    } 


    func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) { 
     print("user logged out") 
    } 

    func loginButtonWillLogin(loginButton: FBSDKLoginButton!) -> Bool { 
     return true 
    } 

} 
+1

检查这个无声的警告http://stackoverflow.com/questions/32048964/fbsdkloginmanager-code-from-objective- c-to-swift/32049197#32049197 –

+1

Facebook中增加了一个参数:http://stackoverflow.com/a/33208089/3202193检查这个答案 –

回答

0

尝试像(没有警告编译给我):

let currentToken = FBSDKAccessToken.currentAccessToken() 

    // Show login only if we had not logged in before 
    if (currentToken == nil || !currentToken.hasGranted("email")) { 

     let ref = Firebase(url: "https://my-app.firebaseio.com") 
     let facebookLogin = FBSDKLoginManager() 
     facebookLogin.logInWithReadPermissions(["email"], fromViewController: self, handler: { 
      (facebookResult, facebookError) -> Void in 
      if facebookError != nil { 
       log.error("Facebook login failed. Error \(facebookError)") 
. 
. 
. 
+0

是的,这似乎工作。谢谢! – user3708224