Facebook iOS登录 - 委托方法没有被调用

4

我正在尝试为我的应用程序实现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。


你确定已经将自己设置为FBSessionDelegate了吗? - Idan
我认为[facebook autorize:permissions delegate:self]设置了会话代理。我也尝试使用[facebook setSessionDelegate:self]进行设置,但结果仍然相同。 - Tejaswi Yerukalapudi
2个回答

7

糟糕,我刚意识到application: handleOpenURL:方法是iOS应用程序委托的方法。它原本在我的一个UIViewControllers中,但现在已经移动到正确的位置并且工作正常。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接