Facebook iOS sdk xcode 4.3/storyboards

Posted

技术标签:

【中文标题】Facebook iOS sdk xcode 4.3/storyboards【英文标题】: 【发布时间】:2012-07-09 12:16:11 【问题描述】:

我已经看了好几个星期的教程,找不到任何在 ios 中实现 FB 的故事板示例。

我让我的应用打开 FLoginscreen,请求用户对应用进行身份验证,然后返回应用... 像其他一些用户一样,不调用 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】:

-(BOOL)application:openURL:sourceApplication:annotation: 应该在应用委托中实现。

向 appDelegate 添加一个属性:

@property (nonatomic, strong) Facebook *facebook;

合成它!

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

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

【讨论】:

以上是关于Facebook iOS sdk xcode 4.3/storyboards的主要内容,如果未能解决你的问题,请参考以下文章

Facebook IOS SDK 3.1.1 与 Xcode 4.5.2 错误

Facebook iOS sdk xcode 4.3/storyboards

facebook SDK3.1 和 Xcode 4.5 链接器错误

Xcode 4.2 和 Facebook SDK 3.0 教程

无法在 Xcode 3.2.6 上为 iOS 构建 Facebook SDK

XCode 和 Facebook IOS SDK - 说明不正确