Getting facebook public profile of a person in ios app

后端 未结 2 860
迷失自我
迷失自我 2021-01-06 21:22

I am working on an ios app which requires Facebook Login.I have successfully implemented the login process.But now I am not able to find that how and where can i get the use

相关标签:
2条回答
  • 2021-01-06 21:39

    Below is the code for getting person public_profile using latest Facebook SDK v4.0.1. You need to use FBSDKProfile to get person profile.

    -(void)viewDidLoad{
            FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
            [self.view addSubview:loginButton];
    
            self.loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"];
            self.loginButton.delegate = self;
            [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];
            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(profileUpdated:) name:FBSDKProfileDidChangeNotification object:nil];
    
             }
    
        -(void)profileUpdated:(NSNotification *) notification{
             NSLog(@"User name: %@",[FBSDKProfile currentProfile].name);
             NSLog(@"User ID: %@",[FBSDKProfile currentProfile].userID);
        }
    
        - (void)  loginButton:(FBSDKLoginButton *)loginButton
        didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                        error:(NSError *)error{
    
        }
    
        - (void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton{
    
        }
    
    0 讨论(0)
  • 2021-01-06 21:48

    Use the Notification method so the when it receives information from facebook it ca call facebook delegated method

     [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(handleFBSessionStateChangeWithNotification:)
                                                     name:@"SessionStateChangeNotification"
                                                   object:nil];
    

    After that implement this method

    -(void)handleFBSessionStateChangeWithNotification:(NSNotification *)notification{
     NSDictionary *userInfo = [notification userInfo];
    
    FBSessionState sessionState = [[userInfo objectForKey:@"state"] integerValue];
    NSError *error = [userInfo objectForKey:@"error"];
    // Usually, the only interesting states are the opened session, the closed session and the failed login.
    if (!error) {
        // In case that there's not any error, then check if the session opened or closed.
        if (sessionState == FBSessionStateOpen) {
    
            [FBRequestConnection startWithGraphPath:@"me"
                                         parameters:@{@"fields": @"first_name, last_name, picture.type(normal), email"}
                                         HTTPMethod:@"GET"
                                  completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                                      if (!error) {
                                          // Set the use full name.
                                          NSLog(@"first name and last name is %@",[NSString stringWithFormat:@"%@ %@",
                                                                                   [result objectForKey:@"first_name"],
                                                                                   [result objectForKey:@"last_name"]
                                                                                   ]);
                                          NSString *firstName = [NSString stringWithFormat:@"%@",[result objectForKey:@"first_name"]];
                                          NSString *middleName = [NSString stringWithFormat:@"%@",[result objectForKey:@"middle_name"]];
                                          NSString *lastName = [NSString stringWithFormat:@"%@",[result objectForKey:@"last_name"]];
                                          NSString *email = [NSString stringWithFormat:@"%@",[result objectForKey:@"email"]];
                                          // Set the e-mail address.
                                          NSLog(@"email is %@", [result objectForKey:@"email"]);
    
    
                                      }
                                      else{
    
    
                                          NSLog(@"%@", [error localizedDescription]);
                                      }
                                  }];
    
    
            // [self.btnToggleLoginState setTitle:@"Logout" forState:UIControlStateNormal];
    
        }
        else if (sessionState == FBSessionStateClosed || sessionState == FBSessionStateClosedLoginFailed){
            // A session was closed or the login was failed. Update the UI accordingly.
            //  [self.btnToggleLoginState setTitle:@"Login" forState:UIControlStateNormal];
            // self.lblStatus.text = @"You are not logged in.";
    
    
    
        }
      }
    }
    
    0 讨论(0)
提交回复
热议问题