2015-04-21 37 views
5

Ciao a tutti sto facendo un'applicazione iOS usando Xcode. voglio implementare il login di Facebook e ottenere il nome utente e il facebookid e inviarlo a un link webview, è possibile?Facebook SDK IOS xcode

il primo problema è che, anche seguendo la guida di Facebook a questo link: https://developers.facebook.com/docs/ios/getting-started non posso lasciare i percorsi d'accesso di Facebook, inizia il simulatore iOS ma finisce con questo messaggio di uscita:

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) 

questo è il mio applicazione delegate.h

#import <UIKit/UIKit.h> 



@interface AppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window; 


@end 

questa è la mia 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 

E nella mia Main.storyboard Ho un controller vista denominata Accesso con la sua relativa Login.h e Login.m e la vista, come dice di Facebook con FBSDKButton classe

EDIT

ok opere d'accesso , ma non posso mostrare un altro controller della vista dopo il 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]; 
} 

questo è il mio metodo di oggi, e il controller della vista ha un id = storyboard dashBoardViewController ma ancora non funziona

+0

Ricorda che probabilmente il tuo simulatore non ha un account Facebook, quindi potrebbe bloccarsi. Dovresti provare questo su un dispositivo senza Facebook funzionante e installato –

+0

FBLoginView proviene da una versione SDK iOS di Facebook obsoleta. È possibile eseguire l'aggiornamento a iOS SDK 4.0.1 e condividere qui eventuali errori? Il secondo problema non sembra causato da Facebook. – corvuszero

risposta

14

Questo potrebbe non essere un buon punto per la tua domanda, ma è almeno relativo. Mentre le istruzioni di Facebook dicono di impostare la classe del pulsante su FBSDKButton, ciò non funziona e si blocca come descritto sopra. L'impostazione della classe del pulsante su FBSDKLoginButton sembra funzionare.

+0

Questa dovrebbe essere la risposta migliore a questa particolare domanda: "FBSDKButton" si blocca ma "FBSDKLoginButton" funziona. Molte grazie! –

5

Ho lo stesso errore esatto.

Dopo l'ispezione, è necessario apparire nel mio progetto: FBSDKCoreKit, FBSDKLoginKit e FBSDKShareKit.

Se si utilizza cocoapods, questa è la linea in Podfile:

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

dopo pod install, aggiungere questo al vostro intestazione colmare .h del file:

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

Nel vostro storyboard, definire una vista con tipo di classe FBSDKLoginButton:

enter image description here