Facebook iOS sdk xcode 4.3 /故事板

时间:2012-07-09 12:16:12

标签: ios xcode facebook sdk storyboard

我已经看了几个星期的教程,但是没能找到在iOS中实现FB的任何故事板示例。

我有我的应用程序打开FBloginscreen,请求用户身份验证app,然后返回应用程序... 像其他一些用户一样,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中实施Facebook时使用故事板的教程那么棒。

谢谢你!

1 个答案:

答案 0 :(得分:0)

-(BOOL)application:openURL:sourceApplication:annotation:应该在app delegate中实现。

向appDelegate添加属性:

@property (nonatomic, strong) Facebook *facebook;

合成它!

在您的logintoFB方法中,在创建Facebook对象后添加此内容 (AppDelegate应该是你的appDelegate类名称)

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.facebook = facebook;