2016-04-15 3 views
2

Я могу успешно аутентифицировать логин с помощью facebook, используя основные процедуры SDK, но у меня возникает некоторая путаница, когда я пытаюсь выполнить аутентификацию с помощью Firebase. Я прочитал документацию и скопировать и вставить код, но я все еще получаю предупреждение, что читаетfacebookLogin.logInWithReadPermissions с проблемами Firebase

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

1) Что такое предупреждение означает, и как я могу это исправить? 2) С помощью сообщений электронной почты и пароля вы видите зарегистрированных пользователей, но как узнать и посмотреть, были ли пользователи зарегистрированы с аутентификацией facebook в базе данных Firebase?

Спасибо за помощь или руководство!

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

Try что-то вроде (компилируется без предупреждений для меня):

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

Смежные вопросы