ios - Facebook 使用 Firebase 和 LoginButton 登录 IOS

标签 ios swift facebook facebook-authentication firebase-authentication

我正在尝试使用 FirebaseFacebook 登录按钮 执行 FacebookLogin,但我一直收到这个

error:Facebook login was cancelled.

2016-04-01 19:08:15.721 biblos[778:408049] Warning: Attempt to present on whose view is not in the window hierarchy!

用户登出...

Facebook 登录已取消。

2016-04-01 19:08:53.675 biblos[778:408049] Warning: Attempt to present on whose view is not in the window hierarchy!

我的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...")
 }


}

最佳答案

此方法已弃用。尝试使用 logInWithReadPermissions:fromViewController:handler: 并传递您的 UIViewController 或 nil(将使用最顶层)。

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

关于ios - Facebook 使用 Firebase 和 LoginButton 登录 IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368458/

相关文章:

iphone - 全屏查看事件指示器

ios - 如何创建一个有多个 Collection View 的屏幕,一个在另一个下面?

python - 导入错误: cannot import name FileModeWarning

swift - 如何将枚举用于类函数

Facebook 应用程序 : how can i change the height of a resizeable iframe application?

ios - NSFetchedResultsController 的部分按两个标准排序

ios - Swift 中的本地通知 ios

ios - 如果不使用通用 iOS 设备创建存档,我提交给 Apple 的 Xcode 存档是否可以?

javascript - 有没有可能的方法将元标记(OPEN GRAPH)从服务器端 php 获取到 angularjs SPA 中?

android - 使用 Facebook SDK 编译应用程序时出错