2015-04-21 27 views
5

Hallo zusammen, ich mache eine iOS-Anwendung mit Xcode. Ich möchte Facebook Login implementieren und den Benutzernamen und die FacebookID erhalten und es an einen Webview Link senden, ist das möglich?Facebook SDK IOS xcode

das erste Problem ist, dass auch durch die Führung Facebook folgenden unter diesem Link: https://developers.facebook.com/docs/ios/getting-started Ich kann die Facebook-Login läuft lassen, die iOS-Simulator gestartet, aber es endet mit dieser Ausgangsnachricht:

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) 

dies ist meine App delegate.h

#import <UIKit/UIKit.h> 



@interface AppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window; 


@end 

dies ist meine 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 
einen View-Controller namens Einloggen mit seinen Verwandten Login.h und Login.m und die Darstellung als erzählt Facebook mit FBSDKButton Klasse

EDIT

ok Login Werke

Und in meinem Main.storyboard Ich habe , aber ich kann eine andere view-Controller nach der Anmeldung meine Methode nicht zeigen

- (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]; 
} 

dies jetzt, und die view-Controller hat ein Storyboard id = dashBoardViewController bekam, aber es funktioniert immer noch nicht

+0

Denken Sie daran, dass Ihr Simulator wahrscheinlich keinen Facebook-Account hat und somit abstürzen könnte. Sie sollten dies auf einem Gerät ausprobieren, ohne dass Facebook funktioniert und installiert ist –

+0

FBLoginView stammt aus einer veralteten Facebook iOS SDK Version. Können Sie ein Upgrade auf iOS SDK 4.0.1 durchführen und alle Fehler, die Sie erhalten, hier freigeben? Das zweite Problem klingt nicht so, als wäre es von Facebook verursacht worden. – corvuszero

Antwort

14

Dies ist vielleicht nicht ganz auf Ihre Frage, aber es ist zumindest verwandt. Während die Anweisungen von Facebook sagen, dass die Klasse der Schaltfläche auf FBSDKButton gesetzt wird, funktioniert das nicht und stürzt ab, wie Sie oben beschrieben haben. Die Einstellung der Klasse der Schaltfläche auf FBSDKLoginButton scheint zu funktionieren.

+0

Dies sollte die beste Antwort auf diese spezielle Frage sein - "FBSDKButton" stürzt ab, aber 'FBSDKLoginButton' funktioniert. Danke vielmals! –

5

Ich habe den gleichen genauen Fehler.

Nach der Überprüfung, es scheint, ich brauche in meinem Projekt: FBSDKCoreKit, FBSDKLoginKit und FBSDKShareKit.

Wenn Sie cocoapods verwenden, ist dies die Linie in Podfile:

pod 'FBSDKCoreKit' 
pod 'FBSDKLoginKit' 
pod 'FBSDKShareKit' 

nach pod install, fügen Sie diese zu Ihrer Überbrückung Header H-Datei:

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

In Ihrem Storyboard, definieren einen Blick mit Klassentyp FBSDKLoginButton:

enter image description here