在使用Social Framework时,为Facebook获取错误ACErrorPermissionDenied(错误代码7)

我正在使用ACAccountStore获取用户的Facebook帐户ID和名称。

当警报出现要求用户许可(“XYZ希望访问您的新闻提要和configuration文件”),用户点击“不允许”,我得到错误代码7,即ACErrorPermissionDenied

但之后,如果我去设置,并开启我的应用程序的Facebook设置,并在应用程序中popup警报再次popup,用户点击“确定”,我仍然得到错误代码7( ACErrorPermissionDenied )。 所以它在“设置”中启用,我已经在应用程序中点击“确定”,但它仍然给我这个错误。

如果我第一次允许访问, 之后从“设置”开启或closures访问权限,它会给我正确的错误或成功。 仅当用户第一次点击“不允许”时,才会出现此问题。 如果他在请求时不允许它在应用程序中,那么他将无法允许FB访问我的应用程序。

我已经使用以下代码在iOS 6.0和6.0.1上testing了这一点:

  NSMutableArray *acAccountArray = [[NSMutableArray alloc] init]; ACAccountStore *accountStore = [[ACAccountStore alloc] init]; ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; [accountStore requestAccessToAccountsWithType:accountType options:[self getOptionDictionary:ACAccountTypeIdentifierFacebook permission:[[NSArray alloc]initWithObjects:@"read_stream",@"user_about_me",@"email", nil]] completion:^(BOOL granted, NSError *error) { if(granted) { // Doing what I want } else { NSLog(@"Error: %@", error); } }]; -(NSDictionary *)getOptionDictionary:(NSString * const)accountTypeIdentifier permission:(NSArray*)permissionArray { NSDictionary *options = nil; if (accountTypeIdentifier == ACAccountTypeIdentifierFacebook) { options = @{ @"ACFacebookAppIdKey" : @"dhksadhakjdhkshd", @"ACFacebookPermissionsKey" : permissionArray, @"ACFacebookAudienceKey" : ACFacebookAudienceFriends}; } return options;} 

你的应用程序仍然在Facebook的“沙箱模式”? 如果是的话,只有pipe理员和开发者才能看到。 如果您在设备上以非pipe理员身份login到Facebook,则可能会收到此错误消息。 禁用沙盒模式解决了我的问题。

这是因为你已经在Facebook上删除了你的应用程序,即使我面临同样的问题。 如果您尝试使用除iOS本机login以外的其他方法login,那么它将添加Facebook应用程序(如果它不存在或被用户在Facebook设置中删除),但是如果尝试使用iOS本机login进行login,则不会发生这种情况。 请告诉我,如果你碰到这个问题的ant解决scheme,也是他们的一种方式,我可以删除我的应用程序被列在iOS的Facebook的设置在这种情况下,因为如果我删除,然后用户重试login,然后它能正常工作。