如何从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);
}
你可以实现这个委托方法。