2012-10-09 4 views
3

iOS의 주소록 API를 통해 연락처의 Facebook ID에 액세스하려고합니다. 이 코드는 연락처에 수동으로 입력 한 프로필에서 작동하지만 iOS6에서 자동으로 동기화 된 Facebook 계정의 소셜 프로필은 반환하지 않습니다. 참고로, 동기화 된 연락처에서 이름, 이메일 및 전화 번호를 반환합니다. Facebook에서 가져온 연락처의 Facebook ID를 가져 오는 방법이 있습니까? 여기 iOS6 주소록의 Facebook 소셜 프로필

내가 사용하고있는 코드입니다 :

ABMultiValueRef profiles = ABRecordCopyValue(record_, kABPersonSocialProfileProperty); 
CFIndex multiCount = ABMultiValueGetCount(profiles); 
for (CFIndex i=0; i<multiCount; i++) { 
    NSDictionary* profile = (__bridge NSDictionary*)ABMultiValueCopyValueAtIndex(profiles, i); 
    NSLog(@"Profile: %@", profile); 
} 
CFRelease(profiles); 

답변

4

내 연락처 목록에 코드를 시도하지만 동기화 또는 명시 적으로 추가 연락처 중 하나에 대한 FB-ID를 제공하지 않습니다. 이것은 Facebook 프로필에 명시 적으로 추가 된 연락처에 대해 얻을 수있는 정보입니다.

2012-10-29 13 : 18 : 06.315 연락처 [6208 : 907] 프로필 : { service = facebook; url = "http : //www.facebook.com/ ????"; username = ????;

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@", [(__bridge NSDictionary *)ABMultiValueCopyValueAtIndex(rec, 0) objectForKey:@"username"]]]]; 
if (data) { 
    NSError *error = nil; 
    tContact.fbDetails = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error]; 
    tContact.fbID = [tContact.fbDetails objectForKey:@"id"]; 
} 
NSLog(@"fbID:%@ fbDetails:%@", tContact.fbID, tContact.fbDetails); 

여전히 사람이 있는지 확인 하시겠습니까}

나는이 같은 사용자 ID를 얻기 위해 그래프 API를 사용하고, 지금

을 (죄송합니다, 이미지를 게시 할 수 없습니다) Contacts.app 자체에서 FB-ID를 가져 오는 방법이 있습니다.

0

kABPersonSocialProfileProperty는 사용자가 실제로 수동으로 설정 아이콘을 클릭하지 않으면 제한된 정보를 반환하고 Facebook 아이콘은 iOS 장치에서 먼저 세부 정보를 동기화 할 수 있습니다. 이런 일이 발생하면 주소록의 app에 의해 링크 된 연락처에있는 모든 kABPersonSocialProfileProperty 매개 변수를 가져올 수 있습니다.

내 자신의 대답 질문을 참조하십시오 :

ABMultiValueGetCount - kABPersonSocialProfileProperty always returns 0 ? How can I get Facebook details from address book?

관련 문제