Facebook iOS Custom Login Button

I just integrated the Facebook iOS SDK with my application and the login works fine. However, the SDK does not seem to give me the ability to configure my login button (it provides me with this ugly default button in the middle of the screen). I use storyboards with my application - how can I connect my own button to their provided code? I saw some old answers posted to Stack, but the FB documentation has changed since then: /

Viewcontroller.m

FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; loginButton.center = self.view.center; [self.view addSubview:loginButton]; 
+7
ios objective-c facebook
source share
4 answers

Make your own button in the storyboard. Connect the action to myButtonPressed .

 - (void)viewDidLoad { [super viewDidLoad]; self.loginButton = [[FBSDKLoginButton alloc] init]; self.loginButton.hidden = YES; } - (void)myButtonPressed { [self.loginButton sendActionsForControlEvents: UIControlEventTouchUpInside]; } 
+30
source share

Updated for Swift 3

 @IBAction func fblogin(_ sender: Any) { let loginManager = LoginManager() UIApplication.shared.statusBarStyle = .default // remove this line if not required loginManager.logIn([ .publicProfile,.email ], viewController: self) { loginResult in print(loginResult) //use picture.type(large) for large size profile picture let request = GraphRequest(graphPath: "me", parameters: ["fields":"email,name,gender,picture"], accessToken: AccessToken.current, httpMethod: .GET, apiVersion: FacebookCore.GraphAPIVersion.defaultVersion) request.start { (response, result) in switch result { case .success(let value): print(value.dictionaryValue) case .failed(let error): print(error) } } } } 

For Objective-C

You can call this method in the UIButton click event

 -(void)fblogin{ FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; if ([UIApplication.sharedApplication canOpenURL:[NSURL URLWithString:@"fb://"]]) { login.loginBehavior = FBSDKLoginBehaviorSystemAccount; } [login logInWithReadPermissions:@[@"public_profile", @"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLog(@"Unexpected login error: %@", error); NSString *alertMessage = error.userInfo[FBSDKErrorLocalizedDescriptionKey] ?: @"There was a problem logging in. Please try again later."; NSString *alertTitle = error.userInfo[FBSDKErrorLocalizedTitleKey] ?: @"Oops"; [[[UIAlertView alloc] initWithTitle:alertTitle message:alertMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; } else { if(result.token) // This means if There is current access token. { [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"picture, name, email"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id userinfo, NSError *error) { if (!error) { dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); dispatch_async(queue, ^(void) { dispatch_async(dispatch_get_main_queue(), ^{ // you are authorised and can access user data from user info object }); }); } else{ NSLog(@"%@", [error localizedDescription]); } }]; } NSLog(@"Login Cancel"); } }]; } 
+13
source share

New custom button documentation url:

https://developers.facebook.com/docs/facebook-login/ios/advanced

Or, if you just want to know what to do when the auth button is pressed, do it in the "Button tapped" method (remember to associate this method with your button):

 #import <FBSDKLoginKit/FBSDKLoginKit.h> #import <FBSDKCoreKit/FBSDKCoreKit.h> 

Then

 - (IBAction)facebookAuthButtonTapped:(id)sender { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logInWithReadPermissions: @[@"public_profile"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLog(@"Process error"); } else if (result.isCancelled) { NSLog(@"Cancelled"); } else { NSLog(@"Logged in"); } }]; } 
+2
source share

From the Facebook documentation: ( https://developers.facebook.com/docs/swift/login )

 import FacebookCore import FacebookLogin func viewDidLoad() { // Add a custom login button to your app let myLoginButton = UIButton(type: .Custom)] myLoginButton.backgroundColor = UIColor.darkGrayColor() myLoginButton.frame = CGRect(0, 0, 180, 40); myLoginButton.center = view.center; myLoginTitle.setTitle("My Login Button" forState: .Normal) // Handle clicks on the button myLoginButton.addTarget(self, action: @selector(self.loginButtonClicked) forControlEvents: .TouchUpInside) // Add the button to the view view.addSubview(myLoginButton) } // Once the button is clicked, show the login dialog @objc func loginButtonClicked() { let loginManager = LoginManager() loginManager.logIn([ .PublicProfile ], viewController: self) { loginResult in switch loginResult { case .Failed(let error): print(error) case .Cancelled: print("User cancelled login.") case .Success(let grantedPermissions, let declinedPermissions, let accessToken): print("Logged in!") } } 
0
source share

All Articles