FBSDKLoginButtonDelegate不触发委托方法

时间:2015-05-22 03:12:10

标签: ios facebook

登录和注销工作正常。 根据{{​​3}}

  

“您的应用可以收到登录结果或退出事件的通知   这样做会为FBSDKLoginButton分配一个确认的委托   FBSDKLoginButtonDelegate协议。“

我已将Facebook添加到我的视图控制器,它具有以下属性:

@property (weak, nonatomic) IBOutlet FBSDKLoginButton *FacebookButton;

和.m(实现)文件有:

@interface firstVC ()
<FBSDKLoginButtonDelegate>

@end

但问题是FBSDKLoginButtonDelegate没有调用:

- (void)  loginButton:  (FBSDKLoginButton *)loginButton
didCompleteWithResult:  (FBSDKLoginManagerLoginResult *)result
                error:  (NSError *)error{

    NSLog(@"facebook login button test");


}

并且注销时没有调用:

- (void) loginButtonDidLogOut:(FBSDKLoginButton *)loginButton{
  NSLog(@"facebook logout button test");
}

此外,我已在@interface和@end

之间的标题中声明了上述方法

3 个答案:

答案 0 :(得分:7)

我必须确保按钮的类是FBSDKLoginButton而不是UIButton,我已经完成了:

@property (weak, nonatomic) IBOutlet FBSDKLoginButton *FacebookButton;

一旦我这样做并在问题中实现了上述两个类,那么修复就是在实现文件中的viewDidLoad上将按钮委托设置为self:

[FacebookButton setDelegate:self];

答案 1 :(得分:0)

我认为ConfusedDeer的答案对当前版本无效。因为即使是文件也似乎已经过时了。

我找到的工作正在使用;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkLogIn) name: FBSDKAccessTokenDidChangeNotification object:nil];
上面的

代码段,在应用程序内部:由Facebook App调用的openURL。 在选择器中,我在登录后做了必要的工作。

注意:每次访问令牌状态更改时都会调用相同的函数,因此您应该使用自己的逻辑备份此代码。 至少在Facebook修复文档或代码之前。

答案 2 :(得分:-1)

将这些行添加到viewdidload

[_loginFaceBook setReadPermissions: @[@"public_profile",@"email"]];
[_loginFaceBook setDelegate:self];
[FBSDKProfile enableUpdatesOnAccessTokenChange:YES];