Вход в Facebook с помощью Firebase и LoginButton для IOS

Я пытаюсь выполнить FacebookLogin, используя Firebase и Facebook Login button, но продолжаю получать это

ошибка: Вход через Facebook был отменен.

2016-04-01 19:08:15.721 biblos[778:408049] Предупреждение: Попытка представить, чье представление не находится в иерархии окон!

Пользователь вышел...

Вход в Facebook был отменен.

2016-04-01 19:08:53.675 biblos[778:408049] Предупреждение: Попытка представить, чье представление не находится в иерархии окон!

Мой код ViewController выглядит следующим образом:

import UIKit
import Firebase
import FBSDKCoreKit
import FBSDKLoginKit

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


    var loginButton = FBSDKLoginButton()
    loginButton.readPermissions = ["public_profile", "email", "user_friends"]
    loginButton.center = self.view.center
    loginButton.delegate = self
    self.view.addSubview(loginButton)

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}




// MARK: - Facebook Login

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
    let ref = Firebase(url: "https://biblos-thebookapp.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 loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
{
    print("User logged out...")
 }


}

person Taylor Simpson    schedule 02.04.2016    source источник


Ответы (1)


Этот метод устарел. Попробуйте вместо этого использовать logInWithReadPermissions:fromViewController:handler: и передайте свой UIViewController или nil (будет использоваться самый верхний).

https://developers.facebook.com/docs/reference/ios/current/class/FBSDKLoginManager/

person Evgeny    schedule 02.04.2016
comment
Я не уверен, что нужно добавить в часть fromViewController. Я поставил ноль и была та же проблема - person Taylor Simpson; 02.04.2016
comment
этот viewController получит обновленное событие, например. viewWillAppear() после того, как статус Facebook будет обновлен. Мне это не нравится, это дает мне меньше контроля, но другой метод устарел. - person Evgeny; 02.04.2016
comment
Ага, хорошо. У меня также все еще есть проблемы с обработчиком. Я не знаю, что туда поставить. - person Taylor Simpson; 02.04.2016