登录时从不调用 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;
}
我有一个带按钮的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;
}