3

iOS のアドレス帳 API を介して連絡先の Facebook ID にアクセスしようとしています。このコードは、連絡先に手動で入力したプロファイルに対しては機能しますが、自動的に同期された (iOS6 の) Facebook アカウントのソーシャル プロファイルは返されません。参考までに、同期された連絡先から名前、電子メール、電話番号を返します。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 に答える