我在我的应用程序中使用了Facebook sdk 3.2,我想获取我的个人资料的所有细节,但它并没有给我生日。
我使用过代码:
[FBRequestConnection
startForMeWithCompletionHandler:^(FBRequestConnection *connection,
id<FBGraphUser> user,
NSError *error) {
if (!error) {
}
}];
有谁能解释我在哪里错了?
任何帮助都将不胜感激。
提前做好准备。答案 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上提到的相同。
答案 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);
}
}];