登录时从不调用 FBLoginViewDelegate 方法

FBLoginViewDelegate methods are never called when I log in

我有一个带按钮的ViewController

@property (weak, nonatomic) IBOutlet FBLoginView *loginButton;

在 ViewDidLoad 中我设置了按钮的委托

self.loginButton.delegate = self;

然后我实现委托方法

- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView {
    NSLog(@"loginViewShowingLoggedInUser");
}

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user {
    NSLog(@"loginViewFetchedUserInfo");
}

自然地,当我点击登录按钮时,它会引导我完成 Facebook 登录过程。问题是,当 Facebook returns 到我的应用程序时,不会调用委托方法。然而,当我查看 https://www.facebook.com/settings?tab=applications 时,我看到我已经登录。

那么如何调用委托方法呢?是的,我有声明

@interface MyFacebookViewController : UIViewController <FBLoginViewDelegate>

Facebook documentation,您需要从 application:openURL:sourceApplication:annotation: 在您的应用委托中调用 Facebook URL 处理程序。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    // Call FBAppCall's handleOpenURL:sourceApplication to handle Facebook app responses
    BOOL wasHandled = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];

    // You can add your app-specific url handling code here if needed

    return wasHandled;
}