Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook SDK IOS xcode

Hi all i'm making an iOS application using Xcode. i want to implement Facebook login and get the username and the facebookid and send it to a webview link, is that possible?

the first problem is that, even by following the Facebook guide at this link : https://developers.facebook.com/docs/ios/getting-started i can't let the Facebook login runs, the iOS simulator starts but it ends with this output message :

2015-04-21 19:51:20.069 DONAT[3899:96245] +[FBSDKButton defaultIcon]: unrecognized selector sent to class 0x103800908
2015-04-21 19:51:20.073 DONAT[3899:96245] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[FBSDKButton defaultIcon]: unrecognized selector sent to class 0x103800908'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001040e9f35 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000103d82bb7 objc_exception_throw + 45
    2   CoreFoundation                      0x00000001040f0f4d +[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x000000010404927c ___forwarding___ + 988
    4   CoreFoundation                      0x0000000104048e18 _CF_forwarding_prep_0 + 120
    5   DONAT                               0x00000001037b6207 -[FBSDKButton configureButton] + 47
    6   DONAT                               0x00000001037b5509 -[FBSDKButton awakeFromNib] + 73
    7   UIKit                               0x00000001049dee75 -[UINib instantiateWithOwner:options:] + 2010
    8   UIKit                               0x000000010483df98 -[UIViewController _loadViewFromNibNamed:bundle:] + 242
    9   UIKit                               0x000000010483e588 -[UIViewController loadView] + 109
    10  UIKit                               0x000000010483e7f9 -[UIViewController loadViewIfRequired] + 75
    11  UIKit                               0x000000010483ec8e -[UIViewController view] + 27
    12  UIKit                               0x000000010475dca9 -[UIWindow addRootViewControllerViewIfPossible] + 58
    13  UIKit                               0x000000010475e041 -[UIWindow _setHidden:forced:] + 247
    14  UIKit                               0x000000010476a72c -[UIWindow makeKeyAndVisible] + 42
    15  UIKit                               0x0000000104715061 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2628
    16  UIKit                               0x0000000104717d2c -[UIApplication _runWithMainScene:transitionContext:completion:] + 1350
    17  UIKit                               0x0000000104716bf2 -[UIApplication workspaceDidEndTransaction:] + 179
    18  FrontBoardServices                  0x0000000107bc42a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16
    19  CoreFoundation                      0x000000010401f53c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    20  CoreFoundation                      0x0000000104015285 __CFRunLoopDoBlocks + 341
    21  CoreFoundation                      0x0000000104015045 __CFRunLoopRun + 2389
    22  CoreFoundation                      0x0000000104014486 CFRunLoopRunSpecific + 470
    23  UIKit                               0x0000000104716669 -[UIApplication _run] + 413
    24  UIKit                               0x0000000104719420 UIApplicationMain + 1282
    25  DONAT                               0x000000010378d743 main + 115
    26  libdyld.dylib                       0x00000001068bc145 start + 1
    27  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

this is my app delegate.h

#import <UIKit/UIKit.h>



@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end

this is my app delegate.m

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




@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [FBSDKLoginButton class];
    return YES;
} //AGGIUNTO DA FB DEVELPER

- (void)applicationWillResignActive:(UIApplication *)application {

}

- (void)applicationDidEnterBackground:(UIApplication *)application {

}

- (void)applicationWillEnterForeground:(UIApplication *)application {

}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [FBSDKAppEvents activateApp]; //AGGIUNTO DA FACEBOOK DEVELOPER GUIDE
}

- (void)applicationWillTerminate:(UIApplication *)application {
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation];
}//AGGIUNTO DA fbdeveloper


@end

And in my Main.storyboard i've got a view controller named Login with his relative Login.h and Login.m and the View as tells Facebook with FBSDKButton class

EDIT

ok login works, but i can't show another view controller after login

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                            user:(id<FBGraphUser>)user {

    NSString * storyboardName = @"dashBoardViewController";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"dashBoardViewController"];
    [self presentViewController:vc animated:YES completion:nil];
}

this is my method now, and the view controller has got a storyboard id = dashBoardViewController but it still not works

like image 377
Marcodevelopingcenter Avatar asked Apr 21 '15 18:04

Marcodevelopingcenter


People also ask

How do I add Facebook SDK framework to Xcode?

In Xcode, click File > Swift Packages > Add Package Dependency. In the dialog that appears, enter the repository URL: https://github.com/facebook/facebook-ios-sdk. In Version, select Up to Next Major and the default option. Complete the prompts to select the libraries you want to use in your project.

What version of Facebook SDK Do I have Xcode?

Check what version of the SDK you're using by going to Integration in the side navigation, and clicking SDK. If the version is out of date, here's how to update it: Find the most current SDK.

What is Facebook SDK for iOS?

The Facebook SDK is what allows mobile app developers to integrate Facebook within a mobile app. SDK stands for software development kit, and it allows for a website or app to integrate with Facebook seamlessly. Examples of what you can do with Facebook SDK include: Facebook Login functionality.


1 Answers

This may not be quite on point to your question, but it's at least related. While the instructions from Facebook say to set the button's class to FBSDKButton, that doesn't work and crashes as you describe above. Setting the button's class to FBSDKLoginButton seems to work.

like image 167
Isaac Avatar answered Nov 01 '22 18:11

Isaac