我实施了一个Facebook登录按钮,效果非常好。但是,在用户成功登录Facebook并返回应用程序后,[FBSDKAccessToken currentAccessToken]
将返回NO
。我添加了一个观察者,看看我想要的代码在返回应用程序后是否正在运行:
-(void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkLogIn)name :UIApplicationWillEnterForegroundNotification object:nil];
}
-(void)checkLogIn
{
NSLog(@"IN CHECK LOG IN");
if ([FBSDKAccessToken currentAccessToken]) {
NSLog(@"Access Token Activated");
}
}
登录后,当我返回应用时,系统会调用checkLogIn
方法,但[FBSDKAccessToken currentAccessToken]
仍会返回NO
。
但是,在我按下iPhone上的主页按钮并返回应用程序后,它会更改为YES。
如何立即更新,以便向用户显示另一个视图控制器?
更新
我回到应用程序后找到了执行正确代码的方法。关键是使用FBSDKAccessTokenDidChangeNotification
是通知中心。所以最终结果将是这样的:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkLogIn) name: FBSDKAccessTokenDidChangeNotification object:nil];
这样,令牌将被更新,它将起作用。
答案 0 :(得分:17)
请检查您的appDelegate类并实现FB SDK所需的所有方法。我附上相同的屏幕截图。
答案 1 :(得分:0)
您应该使用以下代码来侦听FB访问令牌更改,而不是侦听委托方法:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didUpdateFacebookAccessToken) name: FBSDKAccessTokenDidChangeNotification object:nil];