2013-03-13 184 views
2

我需要从地址簿获取唯一的Facebook联系人。我经历了许多线索,并提出了以下代码。从地址簿获取Facebook联系人

- (IBAction)buttonPressed:(id)sender { 
if (ABAddressBookRequestAccessWithCompletion) { // if in iOS 6 

    // Request authorization to Address Book 
    ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 
     ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { 
        [self getFacebookContacts:addressBookRef]; 
     }); 
    } 
    else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { 
       [self getFacebookContacts:addressBookRef]; 
    } 
    else { 
     // The user has previously denied access 
     // Send an alert telling user to change privacy setting in settings app 
    } 
} 
else{ // if not in iOS 6 

    ABAddressBookRef addressBookRef = ABAddressBookCreate(); 
      [self getFacebookContacts:addressBookRef]; 
    NSLog(@"Not ios 6"); 
    } 
} 

-(void) getFacebookContacts:(ABAddressBookRef) addressBookRef 
{ 
    CFArrayRef allContacts = ABAddressBookCopyArrayOfAllPeople(addressBookRef); 
    CFIndex contactCount = CFArrayGetCount(allContacts); 
    // Traverse through contacts 
    for(int i=0; i<contactCount; i++) 
    { 
     ABRecordRef ref = CFArrayGetValueAtIndex(allContacts, i); 
     //Check if contact has social profile 
     ABMultiValueRef social = ABRecordCopyValue((ABRecordRef)ref, kABPersonSocialProfileProperty); 
     if (social) { 
      // ***** This is coming as 0  ********** 
      CFIndex count = ABMultiValueGetCount(social); 
      for (int i = 0 ; i < count; i++) { 
       CFDictionaryRef socialValue = ABMultiValueCopyValueAtIndex(social, i); 
       if(CFStringCompare(CFDictionaryGetValue(socialValue, kABPersonSocialProfileServiceKey), kABPersonSocialProfileServiceFacebook, 0)==kCFCompareEqualTo) { 
        NSLog(@"Facebook Contact %d : %@",i, (NSString*) CFDictionaryGetValue(socialValue, kABPersonSocialProfileUsernameKey)); 
       } 
      } 
     } 
    } 
} 

因为我得到的计数是0,因此我无法获取任何联系人。从地址簿中同步我的Facebook帐户后,地址簿中添加了许多联系人 - > Facebook

请检查代码并让我知道是否有任何建议或者我做错了什么。

+0

嘿@Sagrian您是否找到了解决方案? – asheinfeld 2014-02-12 20:22:03

回答

0

您正试图获取kABPersonSocialProfileUsernameKey,但它可以为空。尝试使用kABPersonSocialProfileUserIdentifierKey。

相关问题