Firebase登录facebook如何segue

时间:2016-05-24 10:05:42

标签: swift facebook firebase swift2

我跟着firebases新教程和facebook一起通过facebook验证用户。

我不知道接下来要做什么,因为教程刚刚结束....

这就是我所拥有的

override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundColor = UIColor(red: 25.0/255.0, green: 25.0/255.0, blue: 25.0/255.0, alpha: 1.0)


    var loginButton: FBSDKLoginButton = FBSDKLoginButton()



    let midx = self.view.center.x


    loginButton.transform = CGAffineTransformMakeTranslation(midx, 400.0)
    self.view!.addSubview(loginButton)


}


    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError?) {
    if let error = error {
        print(error.localizedDescription)
        return
    }
    self.performSegueWithIdentifier("login", sender: self)
}

它成功登录我,但没有执行segue ..我也试过了一个其他的声明

我是facebook和firebase的新手

2 个答案:

答案 0 :(得分:1)

所以我可以看到的问题是你正在调用return函数,之后什么都不会被调用。因此,请尝试删除返回或尝试使用下面提供的代码:

  override func viewDidLoad() {
    super.viewDidLoad()


    fbLogin.readPermissions = ["public_profile", "email", "user_friends"]

    fbLogin.delegate = self

}

在你的“func loginButton(loginButton:FBSDKLoginButton!,didCompleteWithResult结果:FBSDKLoginManagerLoginResult!,error:NSError!)”部分

中试试这个
{

    if error == nil
    {
        print("Login complete.")





        let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

        FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
            // ...
        }

        let accessToken = FBSDKAccessToken.currentAccessToken()
        if(accessToken != nil) //should be != nil
        {

        let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name,age_range,devices,hometown,gender,work"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET")
        req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in
            if(error == nil)
            {
                print("result \(result)")
            }
            else
            {
                print("error \(error)")
            }
        })


             self.performSegueWithIdentifier("login", sender: nil)


        }else{
            let loginFBAlert = UIAlertController(title: "Oops!", message: "Your login to facebook was interupted", preferredStyle: UIAlertControllerStyle.Alert)


            loginFBAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in
                self.pressedCancelOnAlert()
            }))
            presentViewController(loginFBAlert, animated: true, completion: nil)
        }

        print("successfully done")


    }
    else
    {
        print(error.localizedDescription)

    }

}

那应该有数百个。让我知道如果有问题,但我有这样的设置。

答案 1 :(得分:1)

我有完全相同的问题

你设置了委托吗? ,如果你以编程方式完成,也可以在故事板上试一试

转到登录按钮,然后单击拖动到顶部的小橙色框

并选择委托!

在我的情况下,我确实以编程方式委托它,但它没有工作,所以我改为手动方式!

现在它有效......