Facebook iOS登录 - 未调用委托方法

时间:2011-07-23 21:04:30

标签: objective-c ios facebook

我正在尝试为我的某个应用程序和代理方法实施Facebook登录 - fbDidLogin: / application: handleOpenURL: / fbDidNotLogin:未被调用。这是我正在使用的代码。非常感谢任何帮助!

- (void)viewDidLoad
{
    ... 
    facebook = [[Facebook alloc] initWithAppId:kFacebookAppId];
}

-(IBAction) loginWithFacebook:(id)sender {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }
    if (![facebook isSessionValid]) {
        NSArray* permissions =  [[NSArray arrayWithObjects:
                              @"email", nil] retain];
        [facebook authorize:permissions delegate:self];
    }
}

#pragma mark - Facebook delegate

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

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

-(void) fbDidNotLogin:(BOOL)cancelled {

}

-(void) fbDidLogout {

}

我还在相应条目下的info.plist文件中有Facebook App ID。我在loginWithFacebook:方法中有突破点并且成功点击。 [facebook authorize:]方法也会被调用。

谢谢,
的Teja。

2 个答案:

答案 0 :(得分:7)

糟糕,我刚刚意识到application: handleOpenURL:方法是iOS应用程序委托方法。我在其中一个UIViewControllers中使用过它。将它移到正确的位置,它可以工作。

答案 1 :(得分:0)

应用程序:handleOpenURL:调用比它还没有调用委托方法。应该有什么问题?