Swift中的Facebook帐户套件



我无法调用Account Kit的委托方法。我可能错了,但我认为这是因为委托方法没有从Objective-C正确翻译成Swift。以下是代码示例:

import AccountKit
import UIKit
class LoginViewController: UIViewController, AKFViewControllerDelegate {
    let accountKit = AKFAccountKit(responseType: .AuthorizationCode)
    var pendingLoginViewController: UIViewController?
    override func viewDidLoad() {
        super.viewDidLoad()
        pendingLoginViewController = accountKit.viewControllerForLoginResume()
    }
    @IBAction func loginWithEmail(sender: AnyObject) {
        let viewController = accountKit.viewControllerForEmailLoginWithEmail(nil, state: generateState()) as! AKFViewController
        viewController.enableSendToFacebook = true
        viewController.delegate = self
        presentViewController(viewController as! UIViewController, animated: true, completion: nil)
    }
    private func generateState() -> String {
        let uuid = NSUUID().UUIDString
        let indexOfDash = uuid.rangeOfString("-")!.startIndex
        return uuid.substringToIndex(indexOfDash)
    }
    func viewController(viewController: UIViewController!, didCompleteLoginWithAuthorizationCode code: String!, state: String!) {
        // This function doesn't get called when user finished their login
    }
}

尝试额外实现其他3个委托方法。我很快就试过了。故障回调是为我调用的(#3)。这很好,因为我没有完成正确的SDK初始化。可能是您遇到了同样的情况,所以您查看控制器接收到的故障回调。由于回调没有实现,您没有意识到:

func viewController(viewController: UIViewController!, didCompleteLoginWithAuthorizationCode code: String!, state: String!) {
    print("1")
}
func viewController(viewController: UIViewController!, didCompleteLoginWithAccessToken accessToken: AKFAccessToken!, state: String!) {
    print("2")
}
func viewController(viewController: UIViewController!, didFailWithError error: NSError!) {
    print("3")
}
func viewControllerDidCancel(viewController: UIViewController!) {
    print("4")
}
我错了。我将responseType设置为.AuthorizationCode,但正在等待对.AccessToken的回调。

@JayVDiyk:如何从回拨中获得用户输入的电话号码

答:您可以通过requestAccount minhod 从accountkit对象中获取

accountKit.requestAccount({ account, error in
                print("Account number (account?.accountID)")
                print("Email: (account?.emailAddress)")
                print("Phone: (account?.phoneNumber?.stringRepresentation())")
})

最新更新