2011-07-23 23 views
4

我正在尝试为我的一个应用程序实现Facebook登录,并且未调用委托方法 - fbDidLogin:/application: handleOpenURL:/fbDidNotLogin:。这是我正在使用的代码。任何帮助深表感谢!Facebook iOS登录 - 未调用委托方法

- (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 { 

} 

我也有Facebook的应用程序ID在相应的条目下的info.plist文件。我在loginWithFacebook:方法中有断点,并且他们成功打中了。 [facebook authorize:]方法也会被调用。

谢谢,
Teja。

+0

你确定自己设置为FBSessionDelegate吗? – Idan

+0

我认为'[facebook autorize:permissions delegate:self]'设置会话委托。我试着用'[facebook setSessionDelegate:self]'来设置它,但我仍然有相同的结果。 –

回答

7

哎呀,我刚刚意识到application: handleOpenURL:方法是一个iOS应用程序的委托方法。我在我的UIViewControllers之一。把它移到正确的地方,它的工作原理。

+0

谢谢,它的帮助很大! –

0

应用程序:handleOpenURL:调用比它也不调用委托方法。应该是什么问题?

相关问题