簡體   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