我在Facebook应用程序身份验证过程中遇到问题,我的Facebook帐户已经授权该应用程序,但有时当我在设备上运行应用程序时,它会打开Facebook应用程序并且对话框显示“您已经授权此应用程序”,这种情况发生了使用相同的Facebook帐户在同一设备上多次.
当我分配Facebook类对象时,我还在NSUserDefaults中保存所有需要的数据:
facebook = [[Facebook alloc] initWithAppId:appID andDelegate:self]; NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; if([userDefault objectForKey:@"FBAccessTokenKey"] && [userDefault objectForKey:@"FBExpirationDateKey"]) { facebook.accessToken = [userDefault objectForKey:@"FBAccessTokenKey"]; facebook.expirationDate = [userDefault objectForKey:@"FBExpirationDateKey"]; }
同样在fbDidLogin和fbDidExtendToken FBSessionDelegate方法中:
- (void)fbDidLogin { NSLog(@"fbDidLogin"); NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; [defaults synchronize]; } - (void)fbDidExtendToken:(NSString *)accessToken expiresAt:(NSDate *)expiresAt { NSLog(@"token extended"); NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:accessToken forKey:@"FBAccessTokenKey"]; [defaults setObject:expiresAt forKey:@"FBExpirationDateKey"]; [defaults synchronize]; }
我错过了什么?
解决方法
这是一个
bug in an older version of the Facebook SDK,但现在已经解决了.