我在我的应用中使用 FBLoginView (版本 3.xx)根据他们的 Facebook 个人资料自动创建用户帐户,但 FBLoginViewDelegate 的委托(delegate)回调没有不再被调用。
我的代码如下:
在我的 AppDelegate 的 didFinishLaunchingWithOptions 方法中,我有这一行:
[FBLoginView class];
我有一个名为 LoginHandler 的类,它符合 FBLoginViewDelegate 协议(protocol)并实现了这些方法:
- (void)loginViewShowingLoggedInUserFBLoginView *)loginView
- (void)loginViewShowingLoggedOutUserFBLoginView *)loginView
- (void)loginViewFetchedUserInfoFBLoginView *)loginView userid<FBGraphUser>)user
- (void)loginViewFBLoginView *)loginView handleErrorNSError *)error
在我的 View Controller 的 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 应用程序,询问权限(仅第一次)并返回到我的应用程序。但是,此时没有调用任何委托(delegate)方法。这以前可以工作,我确实得到了 loginViewShowingLoggedInUser 和 loginViewFetchedUserInfo 的回调,但前段时间它停止工作,我根本不知道是什么改变破坏了它.
有趣的是,每次我启动应用程序时(在我使用 Facebook 按钮执行任何操作之前)我的 loginViewShowingLoggedOutUser 都会被调用。我不知道这是否与我的问题有关,或者这是否是正常行为。
Best Answer-推荐答案 strong>
我找到了答案。我需要在我的应用委托(delegate)中重写此方法。
-(BOOL)applicationUIApplication *)application openURLNSURL *)url sourceApplicationNSString *)sourceApplication annotationid)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;
}
关于ios - 不再调用 FBLoginView 委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/24800673/
|