私はこれをチェックしました。
Facebookのプロフィールで、誕生日の外観を「日と月のみ」に設定しています
私のアプリでは、次の権限でログインします:
NSArray *permissions = [[NSArray alloc] initWithObjects:@"user_birthday",
@"email",
@"user_about_me",
@"user_hometown",
nil];
FBSession *session = [[FBSession alloc] initWithAppID:nil
permissions:permissions
urlSchemeSuffix:nil
tokenCacheStrategy:_tokenCaching];
もちろん、@"user_birthday"
許可だけが必要です。
それから私はfetchUserData
方法を持っています:
- (void)fetchUserData
{
if (FBSession.activeSession.isOpen)
{
[[FBRequest requestForMe] startWithCompletionHandler:
^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *user,
NSError *error)
{
if (!error)
{
NSLog (@"FB: id: %@", user.id);
NSLog (@"FB: username: %@", user.username);
NSLog (@"FB: link: %@", user.link);
NSLog (@"FB: name: %@", user.name);
NSLog (@"FB: first_name: %@", user.first_name);
NSLog (@"FB: last_name: %@", user.last_name);
NSLog (@"FB: middle_name: %@", user.middle_name);
NSLog (@"FB: birthday: %@", user.birthday);
NSLog (@"FB: email: %@",[user objectForKey:@"email"]);
NSLog (@"FB: gender: %@",[user objectForKey:@"gender"]);
}
}];
}
}
「日と月のみ」を設定しても、fetchUserData の結果は次のようになります。
FB: birthday: 08/16/1978
編集:
これは、ログインしているユーザーに対してのみ機能します。彼の友人の場合、タイムラインへの投稿を許可したデータのみを取得できます (FQL を使用しても)。
Graph API エクスプローラー(FQL クエリ)で FQL クエリが返す内容を試すことができます。
まず、ユーザーの friends_birthday パーミッションでアクセス トークンを取得してください ([アクセス トークンの取得] ボタンを使用)。
クエリを実行します。
SELECT uid, name, birthday_date from user where uid IN (SELECT uid2 FROM friend WHERE uid1=your_facebook_id_here)
結果を確認すると、可能な形式は次のとおりであることがわかります。
完全な誕生日:MM/DD/YYYY
月と日:MM/DD
表示しない:<null>
したがって、Anoop Vaidya からのアドバイスに従うのが最善でしょう。