2016-04-15 72 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