我可以閱讀Facebook好友的名字,姓氏,生日......但我無法從我的地址簿中讀取Facebook用戶名編號。iOS6從地址簿中讀取Facebook用戶名編號
如果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);
}
}