2016-04-15 8 views
2

Ich bin in der Lage, Anmeldung mit Facebook mit grundlegenden SDK-Verfahren erfolgreich zu authentifizieren, aber ich habe einige Verwirrung, wenn ich versuche, mit Firebase zu authentifizieren. Ich habe durch die Dokumentation gelesen und kopiert und den Code eingefügt, aber ich bin immer noch eine Warnung, dassfacebookLogin.logInWithReadPermissions mit Firebase-Problemen

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

1) liest Was bedeutet diese Warnung und wie kann ich es beheben? 2) Mit E-Mails und Passwort anmelden sehen Sie die registrierten Benutzer erstellt, aber woher weiß ich und sehen, ob Benutzer mit Facebook-Authentifizierung in der Firebase DB registriert wurden?

Danke für jede Hilfe oder Richtung!

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

Prüfung dies für stille Warnungen http://stackoverflow.com/questions/32048964/fbsdkloginmanager-code-from-objective- c-to-swift/32049197 # 32049197 –

+1

Facebook ist ein weiterer Parameter hinzugefügt: http://Stackoverflow.com/a/33208089/3202193 Überprüfen Sie diese Antwort –

Antwort

0

versuchen, etwas wie (kompiliert ohne Warnungen für mich):

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

yep, das scheint zu funktionieren. Vielen Dank! – user3708224