登录和注销工作正常。 根据{{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
之间的标题中声明了上述方法答案 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];