接受应用程序时select“不是现在”导致“com.facebook.sdk error2”

使用Facebook iOS SDK 3.1。

当select不允许“连接”到Facebook应用程序,我坚持Facebook投掷“com.facebook.sdk错误2”。 我的错误,即使重新安装我的应用程序。

重现步骤:

  1. select连接Facebook
  2. 在popup的UIAlertView中select“Not Now”

=>我不能select再次连接。

用户再次连接的唯一方法是从设置中删除她的Facebook帐户,然后再次添加。

这是Facebook SDK中的错误还是我错过了什么?

我明显地遵循授权教程,一切正常(auth,张贴的东西),当select连接。

好的,所以我想清楚这里发生了什么。 当拒绝应用程序的授权时,它将作为设备的Facebook帐户(设置> Facebook)存储。

通过转到设置并重新启用有问题的应用程序,您可以尝试再次连接。 用户不太清楚,但是你可以捕捉到这个错误,并向用户显示某种信息。

这是我实现它(与Facebook的默认error handling相比):

 - (void)sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error { .... if (error) { NSString *errorTitle = NSLocalizedString(@"Error", @"Facebook connect"); NSString *errorMessage = [error localizedDescription]; if (error.code == FBErrorLoginFailedOrCancelled) { errorTitle = NSLocalizedString(@"Facebook Login Failed", @"Facebook Connect"); errorMessage = NSLocalizedString(@"Make sure you've allowed My App to use Facebook in Settings > Facebook.", @"Facebook connect"); } UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:errorTitle message:errorMessage delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"Facebook Connect") otherButtonTitles:nil]; [alertView show]; } 

}

当我尝试使用Facebook框架在Facebook上login时,在设置中添加帐户时遇到了同样的问题,但是我通过使用以下代码修复了此问题:

就像我知道的“com.facebook.sdk error2”一样。 当有一个帐户是在iPhone中添加。

appdelegate.h

@属性(强,非primefaces)FBSession * mysession;

只需在appdelegate.m中添加该方法

 -(void)openSessionWithAllowLoginUI:(BOOL)allowLoginUI{ if (!self.mysession.isOpen) { // create a fresh session object self.mysession = [[FBSession alloc] initWithPermissions:permissions]; } [self.mysession openWithCompletionHandler:^(FBSession *session, FBSessionState stat, NSError *error){ [self sessionStateChanged:session state:stat error:error]; NSLog(@"Session Staet is = %u",stat); switch (stat){ case FBSessionStateClosed: break; case FBSessionStateOpen:{ NSString *strAccessToken1 = [mysession accessToken]; NSLog(@"AccessToken = %@",strAccessToken1); NSString *urlstring1 = [NSString stringWithFormat:@"https://graph.facebook.com/me?access_token=%@",strAccessToken1]; NSURL *url1 = [NSURL URLWithString:[urlstring1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSString *jsonRes = [NSString stringWithContentsOfURL:url1 encoding:NSUTF8StringEncoding error:nil]; NSDictionary *facebookData = [jsonRes JSONValue]; NSLog(@"FBSessionStateOpen = %@",facebookData); NSString *strFBID = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%@",[facebookData objectForKey:@"id"]]]; NSString *strName = [[NSString alloc]initWithString:[facebookData objectForKey:@"name"]]; NSLog(@"FBSessionStateOpen = %@",strName); NSString *ProfileImageURL = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture",strFBID]; NSLog(@"Profile image URL is = %@",ProfileImageURL); NSString *strImageURl = [[NSString alloc]initWithString:ProfileImageURL]; strAccessToken = [[NSString alloc]initWithString:strAccessToken1]; strAppUserName = [[NSString alloc]initWithString:strName]; strFacebookUsername = [[NSString alloc]initWithString:strName]; strAppUserProfileImage = [[NSString alloc]initWithString:strImageURl]; strFacebookUserId = [[NSString alloc]initWithString:strFBID]; break; } default: break; } }]; } 

这在我的行动方法

 -(IBAction)Facebook_Btn_Clicked:(id)sender{ [appDelegate openSessionWithAllowLoginUI:YES]; }