I\'ve successfully use facebook SDK to login and get profile picture and name. But It\'s in the same view. I\'m wondering how to change to another view after login.
this is custom button method :
- (void)viewDidLoad {
[super viewDidLoad];
// self.loginView.delegate = self; //hide one
}
- (IBAction)butFacebooklogin:(id)sender
{
NSArray *permissions = @[@"email",@"user_about_me",@"user_status",@"user_location"];
// OPEN Session!
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// if login fails for any reason, we alert
if (error) {
//NSLog(@"error %@",error);
// show error to user.
} else if (FB_ISSESSIONOPENWITHSTATE(status)) {
// no error, so we proceed with requesting user details of current facebook session.
//NSLog(@"we are here");
//NSLog(@"----%@",[session accessTokenData].accessToken);
// NSString *tok = [session accessTokenData].accessToken;
// NSLog(@"tok 2");
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
if (error) {
NSLog(@"error:%@",error);
}
else
{
/*
NSString *userlocation=[NSString stringWithFormat:@"%@",user.location[@"name"]];
NSArray *items = [userlocation componentsSeparatedByString:@","];
NSString *usercity, *userstate;
if ([items count]>0) {
usercity=[items objectAtIndex:0];
userstate=[items objectAtIndex:1];
userstate = [userstate stringByReplacingOccurrencesOfString:@" " withString:@""];
}
else
{
usercity=@"";
userstate=@"";
}
*/
NSString *email=[user objectForKey:@"email"];
if (email.length>0) {
email=[user objectForKey:@"email"];
}
else
{
email=@"";
}
NSString *userUpdate =[NSString stringWithFormat:@"user_id=%@&fname=%@&lname=%@",email,user.first_name,user.last_name,nil];
NSLog(@" RequestString for get login details: %@",userUpdate);
// here add ur segue or push view method
}
}];
// [self promptUserWithAccountName]; // a custom method - see below:
}
}];
}
In latest FB SDK this doesn't work anymore. FBSession (along with FBRequest) class has been dropped.
Now you have to use FBSDKLoginManager class and its method
- (void)logInWithReadPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler;
Sample code of login and getting user info:
FBSDKLoginManager* lm = [[FBSDKLoginManager alloc] init];
[lm logInWithReadPermissions:@[@"public_profile", @"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
// no error, so get user info
if (!error && !result.isCancelled)
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSLog(@"fetched user:%@ and Email : %@", result,result[@"email"]);
}
}];
}
}];
As stated here