我正在使用 获取用户的 Facebook 帐户 ID 和名称ACAccountStore
。
当出现警告请求用户许可(“XYZ 想要访问您的新闻提要和个人资料”)并且用户点击“不允许”时,我收到错误代码 7,即ACErrorPermissionDenied
。
但在那之后,如果我转到“设置”并打开我的应用程序的 Facebook 设置并返回应用程序,警报再次弹出并且用户点击“确定”,我仍然收到错误代码 7 ( ACErrorPermissionDenied
)。所以它在设置中启用,我在应用程序中点击了“确定”,但它仍然给我这个错误。
如果我第一次允许访问,然后从“设置”打开或关闭访问,它会给我正确的错误或成功。仅当用户第一次点击“不允许”时才会出现此问题。如果他在询问时不允许在应用程序中使用它,那么他将无法允许 FB 访问我的应用程序。
我已经使用以下代码在 iOS 6.0 和 6.0.1 上对此进行了测试:
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;}