繁体   English   中英

如何使用最新的Facebook SDK从iOS中的Facebook API获取用户的生日?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM