Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
839 views
in Technique[技术] by (71.8m points)

ios - Login with Facebook using custom button

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.

AppDelegate.m file

- (void)applicationDidBecomeActive:(UIApplication *)application {
[[FBSession activeSession] handleDidBecomeActive];
}
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return [[FBSession activeSession]handleOpenURL:url];
}

viewController.m file

@interface loginViewController () <FBLoginViewDelegate>
@property (weak, nonatomic) IBOutlet FBLoginView *loginView;
@property (weak, nonatomic) IBOutlet FBProfilePictureView *ProfilePic;
@property (weak, nonatomic) IBOutlet UILabel *ProfileName;

- (void)viewDidLoad {
  [super viewDidLoad];
  self.loginView.delegate = self;
}

#pragma mark FBLoginviewDelegate
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user{
self.ProfilePic.profileID = user.objectID;
self.ProfileName.text = user.name;
}
-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView{
self.ProfilePic.profileID = nil;
self.ProfileName.text = nil;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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:
                                  }
                              }];
    }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...