Facebook の友達の名前、姓、誕生日を読み取ることはできますが、アドレス帳から Facebook のユーザー名 ID を読み取ることができません。
Facebook の詳細が携帯電話のアドレス帳にある場合は問題なく読み取れますが、CardDAV サーバーからのものである場合は読み取れません。
電話/シミュレーターで にアクセスするとAddressBook
、ユーザー名が表示されるので、利用できます。
、、、、権限がread_stream
あります。email
read_friendlists
publish_stream
publish_actions
助けてください... アイデアが尽きた
iOS6、XCode 4.5、Facebook SDK 3.1
// Extract
// These all return values
CFStringRef cfsPrefix = ABRecordCopyValue((__bridge ABRecordRef)recPerson, kABPersonPrefixProperty);
CFStringRef cfsFirstname = ABRecordCopyValue((__bridge ABRecordRef)recPerson, kABPersonFirstNameProperty);
CFStringRef cfsLastname = ABRecordCopyValue((__bridge ABRecordRef)recPerson, kABPersonLastNameProperty);
CFStringRef cfsCompany = ABRecordCopyValue((__bridge ABRecordRef)recPerson, kABPersonOrganizationProperty);
NSDate* datBirthday = (NSDate*) CFBridgingRelease(ABRecordCopyValue((__bridge ABRecordRef)recPerson, kABPersonBirthdayProperty));
NSDate* datCreate = (NSDate*) CFBridgingRelease(ABRecordCopyValue((__bridge ABRecordRef)recPerson, kABPersonCreationDateProperty));
NSDate* datModify = (NSDate*) CFBridgingRelease(ABRecordCopyValue((__bridge ABRecordRef)recPerson, kABPersonModificationDateProperty));
// This never returns a value in strFacebook
NSString *strFacebook;
ABMultiValueRef socialMulti = ABRecordCopyValue((__bridge ABRecordRef) recPerson, kABPersonSocialProfileProperty);
// ABMultiValueGetCount(socialMulti) always returns 0 ?
for (CFIndex i = 0; i < ABMultiValueGetCount(socialMulti); i++) {
NSDictionary* social = (__bridge NSDictionary*)ABMultiValueCopyValueAtIndex(socialMulti, i);
if ([social[@"service"] isEqualToString:(__bridge NSString*)kABPersonSocialProfileServiceFacebook]) {
strFacebook = (NSString*)social[@"username"];
NSLog(@"we got a facebook. username is %@ %@", [self nameForSource:(__bridge ABRecordRef)recPerson], cFacebook);
}
}