不再调用FBLoginView委托方法

时间:2014-07-17 10:10:00

标签: ios facebook cocoa-touch facebook-ios-sdk

我在我的应用中使用FBLoginView(版本3.xx)根据自己的Facebook个人资料自动创建useraccounts,但FBLoginViewDelegate的代表回调不再被调用。

我的代码如下:

在我didFinishLaunchingWithOptions的{​​{1}}方法中,我有这一行:

AppDelegate

我有一个名为[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

我还设置了我的Info.plist:

self.fbLoginView.readPermissions = @[@"public_profile", @"email"];
self.fbLoginView.delegate = [LoginHandler sharedInstance];

当我按下Facebook登录按钮时,它会切换到Facebook应用程序,询问有关权限(仅限第一次)并返回到我的应用程序。但是,此时不会调用任何委托方法。这曾经在以前工作过,我确实得到了FacebookAppID (containing <my-app-id>) FacebookDisplayName (containing my app name= CFBundleURLSchemes (containing fb<my-app-id>) loginViewShowingLoggedInUser的回调,但不久前它停止了工作,我只是无法弄清楚哪些更改已经破坏了它。 有趣的是,每次启动应用程序时(在我使用Facebook按钮执行任何操作之前),我的loginViewFetchedUserInfo都会被调用。我不知道它是否与我的问题有关,或者这是否是正常行为。

1 个答案:

答案 0 :(得分:4)

我找到了答案。我需要在我的app delegate中覆盖此方法。

-(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;
}