在iOS中没有从Facebook sdk 3.2获得出生日期

时间:2014-06-05 04:51:39

标签: ios facebook

我在我的应用程序中使用了Facebook sdk 3.2,我想获取我的个人资料的所有细节,但它并没有给我生日。

我使用过代码:

[FBRequestConnection
     startForMeWithCompletionHandler:^(FBRequestConnection *connection,
                                       id<FBGraphUser> user,
                                       NSError *error) {
         if (!error) {


         }
     }];

有谁能解释我在哪里错了?

任何帮助都将不胜感激。

提前做好准备。

3 个答案:

答案 0 :(得分:6)

在版本3.13之后,如果您要求public_profile,email和user_friends以外的其他权限,那么您必须提交您的应用以供审核,否则您将无法获得它,这就是您无法获得user_birthday的原因。正如here

所写
  

开发人员要求的不仅仅是public_profile,email和user_friends需要提交他们的应用程序以供Facebook审核,以批准应用程序请求的权限。有关详细信息,请参阅权限指南。现有应用程序需要一年时间才能通过审核,包括对现有应用程序的更新。 2014年4月30日之后创建的应用必须经过审核。

答案 1 :(得分:1)

NSArray *arrFBPermissions = [[NSArray alloc] initWithObjects: @"user_birthday",@"email",nil];
[FBSession openActiveSessionWithReadPermissions:arrFBPermissions
                                   allowLoginUI:YES
                              completionHandler:
 ^(FBSession *session, FBSessionState state, NSError *error) {

     if (error == nil) {

         [FBRequestConnection startWithGraphPath:@"me?fields=id,name,birthday" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

             if (error == nil) {

                 NSLog(@"FB user detail %@",result);

             }else {

                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"Following error occured:%@",error] delegate:nil cancelButtonTitle:@"dismiss" otherButtonTitles: nil];
                 [alert show];

             }
         }];

     }else {

         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"Following error occured:%@",error] delegate:nil cancelButtonTitle:@"dismiss" otherButtonTitles: nil];
         [alert show];

     }
 }];

您需要提供FacebookAppID,将其添加到网址方案中,并且包标识符应与您在Facebook上提到的相同。

You can check it on developer.facebook.com graph api tool

答案 2 :(得分:0)

为了获得出生日期,您可以像FBGraphUser一样检索数据

[[FBRequest requestForMe] startWithCompletionHandler:
     ^(FBRequestConnection *connection,
       NSDictionary<FBGraphUser> *user,
       NSError *error) {
         if (!error) {
             NSString *firstName = user.first_name;
             NSString *lastName = user.last_name;
             NSString *bDay = user.birthday;
             NSString *facebookId = user.id;
             NSString *email = [user objectForKey:@"email"];
             NSString *imageUrl = [[NSString alloc] initWithFormat: @"http://graph.facebook.com/%@/picture?type=large", facebookId];
             NSLog(@"%@, %@ , %@ , %@ ,%@ ,%@",bDay,firstName,lastName,facebookId,email,imageUrl);
         }
     }];