[英]How to fetch user's birthday from Facebook API in iOS using latest Facebook sdk?
如何使用最新的Facebook SDK从iOS中的Facebook API获取用户的生日?
我试图去拿
{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday"}
并已获得许可
[login logInWithReadPermissions:@[@"public_profile", @"email", @"user_friends",@"user_birthday"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
但是无法获取生日。
您不能仅获取您可以获取的用户生日,并且必须在应用程序批准后将应用程序发送给Facebook开发者以供批准,而不是您的应用程序可以设置额外的权限,但我认为您无法获得用户的生日。
使用此代码。这可能对您有帮助
(IBAction)btnfb:(id)sender
{
if (!FBSession.activeSession.isOpen)
{
NSArray *_fbPermissions = @[@"email",@"publish_actions",@"public_profile",@"user_hometown",@"user_birthday",@"user_about_me",@"user_friends",@"user_photos",];
[FBSession openActiveSessionWithReadPermissions:_fbPermissions allowLoginUI:YES completionHandler:^(FBSession *session,FBSessionState state, NSError *error)
{
if (error)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
else if(session.isOpen)
{
[self btn_fb:sender];
}
}];
return;
}
[FBRequestConnection startWithGraphPath:@"me" parameters:[NSDictionary
dictionaryWithObject:@"cover,picture.type(large),id,name,first_name,last_name,gender,birthday,email,location,hometown,bio,photos"
forKey:@"fields"] HTTPMethod:@"GET"
completionHandler:^(FBRequestConnection *connection, id result, NSError
*error)
{
{
if (!error)
{
if ([result isKindOfClass:[NSDictionary class]])
{
NSLog(@"%@",result);
}
}
}
}];
}
Swift 3x:
希望这会对任何人有帮助
//MARK: - sign in with facebook
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logIn(withReadPermissions: ["email","user_photos","user_birthday"], from: self) { (result, error) -> Void in
if (error == nil) {
let fbloginresult : FBSDKLoginManagerLoginResult = result!
print("fbloginresult######:\(fbloginresult)")
if (result?.isCancelled)! {
print(result ?? FBSDKLoginManagerLoginResult())
} else if(fbloginresult.grantedPermissions.contains("email")) {
//show loader
//print(user())
//FETCH USER DATA
if((FBSDKAccessToken.current()) != nil) {
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email, birthday"]).start( completionHandler: { (connection, result, error) -> Void in
if (error == nil) {
//everything works print the user data
print(result ?? AnyObject.self)
if let jsondata = result as? [String: Any], let strEmail = jsondata["email"] as? String, let fb_id = jsondata["id"] as? String, let picture = jsondata["picture"] as? [String: Any], let data = picture["data"] as? [String: Any],let url = data["url"] as? String {
// print(url)
print(strEmail)
print(fb_id)
}
//Loader hide
}
})
}
}
}
}
尝试使用您已注册应用程序的帐户。 不要尝试使用其他Facebook帐户。
它会给你一个生日。
还要检查帐户的隐私设置。
生日可能不公开。 这也可能是一个问题。
谢谢
考虑到要获得生日(以及其他一些属性,例如用户简历),应用必须由Facebook审核。 否则,尽管权限已正确授予用户,但Graph API调用将不会检索此属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.