我在我的应用中使用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
都会被调用。我不知道它是否与我的问题有关,或者这是否是正常行为。
答案 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;
}