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
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.
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With