iOS6地址簿中的Facebook社交个人资料

时间:2012-10-09 08:37:06

标签: ios6 abaddressbook

我正试图通过iOS中的地址簿API访问联系人的Facebook ID。该代码适用于我手动输入联系人的配置文件,但它不会返回自动同步的Facebook帐户的社交个人资料(在iOS6中)。仅供参考,它会返回同步联系人的姓名,电子邮件和电话号码。有没有办法获取从Facebook检索到的联系人的Facebook ID?

以下是我正在使用的代码:

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);

2 个答案:

答案 0 :(得分:4)

我在联系人列表中尝试了您的代码,但它没有为同步或明确添加的联系人提供FB-ID。 这是我可以通过Facebook个人资料明确添加的联系信息。

  

2012-10-29 13:18:06.315联系人[6208:907]简介:{       service = facebook;       url =“http://www.facebook.com/ ????”;       username = ????; }

(抱歉,无法发布图片)

现在,我正在使用图API来获取这样的用户ID:

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);

仍然想知道是否有人有任何方法从Contacts.app本身获取FB-ID。

答案 1 :(得分:0)

kABPersonSocialProfileProperty返回有限的信息,除非用户实际手动点击设置图标,Facebook图标然后允许Facebook应用程序首先在他们的iOS设备上同步详细信息。一旦发生这种情况,您可以获取地址簿中应用程序所连接的链接联系人中的所有kABPersonSocialProfileProperty参数。

看我自己回答的问题:

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