如何从iOS中的Facebook SDK获取用户信息?

当用户会话打开时如何获取用户名。我尝试了来自Facebook sdk示例的会话login示例。 如果有人知道解决scheme,请帮助我。 提前致谢。

- (IBAction)buttonClickHandler:(id)sender { // get the app delegate so that we can access the session property SLAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; // this button's job is to flip-flop the session from open to closed if (appDelegate.session.isOpen) { // if a user logs out explicitly, we delete any cached token information, and next // time they run the applicaiton they will be presented with log in UX again; most // users will simply close the app or switch away, without logging out; this will // cause the implicit cached-token login to occur on next launch of the application //hear i need to fetch user name ? [appDelegate.session closeAndClearTokenInformation]; } else { if (appDelegate.session.state != FBSessionStateCreated) { // Create a new, logged out session. appDelegate.session = [[FBSession alloc] init]; } // if the session isn't open, let's open it now and present the login UX to the user [appDelegate.session openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) { // and here we make sure to update our UX according to the new session state [self updateView]; }]; } } 

loginauthentication后,您可以从下面的活动FBSession获取详细信息

 if (FBSession.activeSession.isOpen) { [[FBRequest requestForMe] startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { if (!error) { NSString *firstName = user.first_name; NSString *lastName = user.last_name; NSString *facebookId = user.id; NSString *email = [user objectForKey:@"email"]; NSString *imageUrl = [[NSString alloc] initWithFormat: @"http://graph.facebook.com/%@/picture?type=large", facebookId]; } }]; } 

更新:版本v3.14.1(2014年5月12日)发布后, id属性不再使用objectID属性, id属性已被弃用

 NSString *facebookId = user.objectID; 

嗨,你可以得到像Facebook的用户的细节:

 - (void)sessionStateChanged:(NSNotification*)notification { if ([[FBSession activeSession] isOpen]) { [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id<FBGraphUser> user, NSError *error) { if (! error) { //details of user NSLog(@"User details =%@",user); } }]; }else { [[FBSession activeSession] closeAndClearTokenInformation]; } } 

谢谢

 if (!error && state == FBSessionStateOpen){ NSLog(@"Session opened"); // Show the user the logged-in UI FBRequest* userupdate = [FBRequest requestWithGraphPath:@"me" parameters: [NSMutableDictionary dictionaryWithObject:@"picture.type(large),id,birthday,email,gender,username,name,first_name" forKey:@"fields"] HTTPMethod:@"GET"]; [drk showWithMessage:nil]; [userupdate startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary* result,NSError *error) { NSLog(@"dict = %@",result); }]; return; } 
  FBSDKGraphRequest(graphPath: "me", parameters: nil).startWithCompletionHandler({ (connection, object, error) in guard let user = object as? Dictionary<String, NSObject> else { alert("facebook sdk gave me trash object \(object)") return } if let error = error { alert(error.localizedDescription) } else { if let userID = user["id"] { // gr8t success } } }) 

– (void)loginViewFetchedUserInfo:(FBLoginView *)loginView用户:(id)user {

 NSLog(@"user facebook details:%@",user.objectID); 

}

你可以实现这个委托方法。