Login with Facebook using custom button

后端 未结 2 2071
别跟我提以往
别跟我提以往 2020-12-21 21:20

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.

相关标签:
2条回答
  • 2020-12-21 21:34

    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:
                                      }
                                  }];
        }
    
    0 讨论(0)
  • 2020-12-21 21:50

    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

    0 讨论(0)
提交回复
热议问题