2012-07-09 168 views
2

我一直在尋找幾周的教程,無法找到任何在iOS中實現FB的故事板示例。Facebook iOS sdk xcode 4.3 /故事板

我有我的應用程序打開FBloginscreen,請求用戶身份驗證的應用程序,然後返回到應用程序... 像其他一些用戶,fbdidlogin和handleopenurl方法不叫。我相信我做錯了什麼,但就是不知道是什麼。 我使用的是默認視圖控制器在我的故事板(我沒有編程創建VC ),所以我可能需要做的東西。

從我的理解是handleopenurl方法需要在我的應用程序delegate.m文件,而不是在我看來Controller.m或者文件,但我不知道應該如何寫,以及如何連接一個UIViewController對象我創建

在VC在我的故事板(帶有按鈕和標籤,我使用)。

ViewController.h (relevant to FB) 

#import "FBConnect.h" 

@interface ViewController : UIViewController 
<UIImagePickerControllerDelegate, 
UINavigationControllerDelegate, FBSessionDelegate, FBDialogDelegate> 
{ 
Facebook *facebook; 
} 

@property (nonatomic,retain) Facebook *facebook;' 

ViewController.m (relevant to FB) 

#import "ViewController.h" 

@implementation ViewController; 
@synthesize facebook; 

-(void)LogintoFB 
{ 
    facebook = [[Facebook alloc] initWithAppId:@"345872345487883" andDelegate:self]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
     && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    } 
    if (![facebook isSessionValid]) { 
     [facebook authorize:nil]; 
     NSLog(@"did log in"); 
    } 


} 
// Pre iOS 4.2 support 
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    NSLog(@"-4.2 got calleld"); 
    return [facebook handleOpenURL:url]; 
} 
// For iOS 4.2+ support 
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    NSLog(@"4.2+ got called"); 
    return [facebook handleOpenURL:url]; 
} 
} 
- (void)fbDidLogin { 
    NSLog(@"fbDidLogin"); 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 


    [facebook dialog:@"feed" andDelegate:self]; 


}' 

,如果你還可以直接我在iOS設備上的將是巨大的實執行時使用的故事板的教程。

謝謝!

回答

0

-(BOOL)application:openURL:sourceApplication:annotation:應該在應用程序委託中實現。

一個屬性添加到的appDelegate:

@property (nonatomic, strong) Facebook *facebook; 

合成它!

在你logintoFB方法創建一個Facebook對象 (AppDelegate中應該是不管你的appDelegate類名)

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
appDelegate.facebook = facebook; 
後添加此