Swift的Facebook登录按钮

Sop*_*mer 9 facebook ios facebook-login swift

在Xcode中,如果我创建一个UIView然后添加自定义类FBSDKLoginButton,当我点击它时引导我通过Facebook登录然后将我返回到同一页面FBSDKLoginButton但不是说登录按钮它现在注销.如果点击登录按钮导致新视图,我将如何制作?


我通过cocoapods下载了Facebook SDK,这是我第一次使用它,所以我对此感到困惑.谢谢您的帮助!

ved*_*ucm 25

一种选择是将视图控制器设置为该代理FBSDKLoginButton并实现该loginButton:didCompleteWithResult:error:方法,该方法在使用该按钮登录时调用.

迅速

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

    @IBOutlet weak var loginButton: FBSDKLoginButton!        

    override func viewDidLoad() {
        super.viewDidLoad()

        self.loginButton.delegate = self
    }
}
Run Code Online (Sandbox Code Playgroud)

OBJ-C

// ViewController.h
@interface ViewController : UIViewController <FBSDKLoginButtonDelegate>

@property (weak, nonatomic) IBOutlet FBSDKLoginButton *loginButton;

@end

// ViewController.m
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.loginButton.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)

然后,在loginButton:didCompleteWithResult:error:方法中,您可以检查resulterror,如果一切正常,则导航到另一个视图.

迅速

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
        if ((error) != nil) {
            // Process error
        }
        else if result.isCancelled {
            // Handle cancellations
        }
        else {
            // Navigate to other view
        }   
    }
Run Code Online (Sandbox Code Playgroud)

OBJ-C

// ViewController.m
@implementation ViewController

- (void)loginButton:(FBSDKLoginButton *)loginButton 
  didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                  error:(NSError *)error {
    if (error) {
        // Process error
    }
    else if (result.isCancelled) {
       // Handle cancellations
    }
    else {
        // Navigate to other view
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在其文档中找到有关如何使用FB登录的详细信息.


Ruu*_*lis 5

在Swift中会是这样的:

class MyViewController: UIViewController, FBSDKLoginButtonDelegate {
    @IBOutlet weak var loginView : FBSDKLoginButton!
    @IBOutlet weak var profilePictureView : FBSDKProfilePictureView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.loginView.delegate = self

        if (FBSDKAccessToken.currentAccessToken() != nil)
        {
            performSegueWithIdentifier("unwindToViewOtherController", sender: self) 
        }
        else
        {
            loginView.readPermissions = ["public_profile", "email", "user_friends"]
        }

    }

    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
        println("User Logged In")

        if ((error) != nil)
        {
            // Process error
        }
        else if result.isCancelled {
            // Handle cancellations
        }
        else {
            // If you ask for multiple permissions at once, you
            // should check if specific permissions missing
            if result.grantedPermissions.contains("email")
            {
                // Do work
            }
        }
    }

    func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
        println("User Logged Out")
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在TargetViewController中添加一个展开函数:

@IBAction func unwindToViewOtherController(segue:UIStoryboardSegue) {
    }
Run Code Online (Sandbox Code Playgroud)