如何从app delegate调用Facebook

时间:2012-05-23 03:25:00

标签: objective-c ios xcode

在过去的5个小时里,我一直在努力将Facebook应用到我的应用程序中,这一直是一个彻头彻尾的痛苦。我现在正在基于Facebook网站一步一步走。我已经按照他们的说法实现了所有内容,但我对如何从另一个视图控制器调用Facebook感到困惑(例如,打开登录屏幕,然后让用户在墙上发布内容)。

我是怎么做到的。如果有人可以请花时间解释我将永远欠你的债,我正在失去理智。感谢

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    facebook = [[Facebook alloc] initWithAppId:@"XXXXXXXXXX" andDelegate:fbControl];

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

}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    return [facebook handleOpenURL:url];
}

- (void)fbDidLogin {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];

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

1 个答案:

答案 0 :(得分:0)

您所做的一切就是与Facebook应用程序进行交互,其中没有任何代码可以让您的应用程序进行交互。例如,我在我的一个应用程序中有这个:

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   FACEBOOK_APP_ID, @"app_id",
                                   self.newsItem.link, @"link",
                                   self.newsItem.imageURL, @"picture",
                                   self.newsItem.title, @"caption",
                                   contentString, @"description",
                                   nil];

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

[appDelegate.facebook dialog:@"feed" andParams:params andDelegate:(id)self];

这显示了一个对话框,允许用户在墙上发布内容。您需要调用的方法取决于您要执行的操作,但dialog:andParams:andDelegate用于显示“发布到新闻Feed”对话框。