3

我正在尝试通过 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);
4

2 回答 2

4

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

2012-10-29 13:18:06.315 联系人[6208:907] 个人资料:{ service = facebook; url = "http://www.facebook.com/????"; 用户名 = ????; }

(抱歉,不能发图片)

现在,我正在使用图形 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。

于 2012-10-29T08:08:48.310 回答
0

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

看我自己回答的问题:

ABMultiValueGetCount - kABPersonSocialProfileProperty 总是返回 0 吗?如何从通讯录中获取 Facebook 详细信息?

于 2013-04-08T12:18:57.697 回答