1

在过去的 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];
}
4

1 回答 1

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用于显示“发布到新闻源”对话框。

于 2012-05-23T04:37:20.737 回答