不再调用 FBLoginView 委托方法
Posted
技术标签:
【中文标题】不再调用 FBLoginView 委托方法【英文标题】:FBLoginView delegate methods not called anymore 【发布时间】:2014-07-17 10:09:59 【问题描述】:我在我的应用程序中使用FBLoginView
(版本 3.xx)根据他们的 Facebook 个人资料自动创建用户帐户,但不再调用 FBLoginViewDelegate
的委托回调。
我的代码如下:
在我的AppDelegate
的didFinishLaunchingWithOptions
方法中,我有这一行:
[FBLoginView class];
我有一个名为LoginHandler
的类符合FBLoginViewDelegate
协议并实现了这些方法:
- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView
- (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView
- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user
- (void)loginView:(FBLoginView *)loginView handleError:(NSError *)error
在我的视图控制器的 viewDidLoad
方法中,我有以下代码:
self.fbLoginView.readPermissions = @[@"public_profile", @"email"];
self.fbLoginView.delegate = [LoginHandler sharedInstance];
我还设置了我的 Info.plist:
FacebookAppID (containing <my-app-id>)
FacebookDisplayName (containing my app name=
CFBundleURLSchemes (containing fb<my-app-id>)
当我按下 Facebook 登录按钮时,它会切换到 Facebook 应用程序,询问权限(仅第一次)并返回到我的应用程序。但是,此时没有调用任何委托方法。这以前可以工作,我确实收到了loginViewShowingLoggedInUser
和loginViewFetchedUserInfo
的回调,但前段时间它停止工作,我根本无法弄清楚是什么改变破坏了它。
有趣的是,每次我启动应用程序时(在我使用 Facebook 按钮执行任何操作之前)我的 loginViewShowingLoggedOutUser
都会被调用。我不知道这是否与我的问题有关,或者这是否是正常行为。
【问题讨论】:
【参考方案1】:我找到了答案。我需要在我的应用委托中重写此方法。
-(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;
【讨论】:
我尝试在这个方法中设置一个断点,它根本没有被命中。 好的,我终于想通了。我必须更新我的 plist 设置,以便应用程序在后台运行。男人很坚强。以上是关于不再调用 FBLoginView 委托方法的主要内容,如果未能解决你的问题,请参考以下文章
没有从 FBLoginView 调用 loginViewShowingLoggedInUser