ios facebook api不火fbLogin

时间:2012-03-07 23:55:40

标签: iphone ios facebook delegates

我需要使用facebook api: 在appdelegate.m中我有这段代码:

// Initialize Facebook
facebook = [[Facebook alloc] initWithAppId:@"MY_TOKEN" andDelegate:self];

// Check and retrieve authorization information
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}

之后,在另一种观点中,我有这个:

AppDelegate* dlg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSArray *permissions = [[NSArray alloc] initWithObjects:@"offline_access", nil];

if (![[dlg facebook] isSessionValid]) {
    [[dlg facebook] authorize:permissions];
}

并且工作正常:使用我的应用程序的授权调用safari,我单击确定以进行授权并再次调用我的应用程序...我的应用程序在授权之前可视化最后一个视图,但事件

- (void)fbDidLogin
{
    NSLog(@"fbDidLogin");
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];
}
未启动AppDelegate.m中的

(我的appdelegate有 FBSessionDelegate )( FBSDionDelegate 的其他事件,如 fbDidNotLogin 也不会被触发。 ..

我的错误在哪里? 提前谢谢

1 个答案:

答案 0 :(得分:2)

我认为您忘记了这两种方法,也许忘记将您的Facebook应用ID添加到信息文件中的网址类型。 for more detail
// Pre 4.2支持

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [facebook handleOpenURL:url]; 
}

// 4.2+支持

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [facebook handleOpenURL:url]; 
}