2013-12-14 3 views
1

사용자가 로그인 할 수 있도록 Facebook iOS SDK를 xCode Project에 추가했습니다. 그러나 사용자가 로그인하면 동일한 뷰 컨트롤러에서 해당 프로필의 정보가 간단히 업데이트되고 로그인 버튼이 로그 아웃으로 변경됩니다.Facebook 로그인 후 새로운 ViewController로 리디렉션

그러나 로그인에 성공하면 사용자를 DashboardViewController로 리디렉션해야합니다. 내가 어떻게 그럴 수 있니?

여기 내하는 .m 파일입니다

#import "ViewController.h" 

#import "FriendsViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.delegate = [[UIApplication sharedApplication] delegate]; 
    self.facebook = [self.delegate facebook]; 
    self.facebook.delegate = self; 

} 

-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.loginButton setTitle:[self.facebook loginLabel] forState:UIControlStateNormal]; 
    self.userProfileImage.profileID = [self.facebook userProfilePicture].profileID; 

    if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) { 

     // Yes, so just open the session. 
     [self.facebook login]; 
    } 
} 

- (IBAction)performLogin:(id)sender 
{ 
    if([self.facebook status] == logOff) 
    { 
     [self.facebook login]; 
    } 
    else 
    { 
     [self.facebook logout]; 
    } 
} 

- (void)loginFacebookStatusUpdate 
{ 
    [self.loginButton setTitle:[self.facebook loginLabel] forState:UIControlStateNormal]; 

    self.userProfileImage.profileID = [self.facebook userProfilePicture].profileID; 
    self.userProfileLabel.text = [self.facebook userProfileName]; 
    self.userProfileBirth.text = [self.facebook userProfileBirthday]; 
} 

- (void)getFriends:(id)sender 
{ 


    if([self.facebook isLogged]) 
    { 
     NSError *error; 
     NSString *query = QUERY_USER_FRIENDS; 

     [self.facebook submitQueryFQL:query error:error]; 
    } 
} 

- (void)fetchFQLQueryResult:(NSArray *)result error:(NSError *)error 
{ 
    self.friends = [NSArray arrayWithArray:result]; 

    FriendsViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"FriendsViewController"]; 
    controller.friends = self.friends; 

    [self presentViewController:controller animated:YES completion:nil]; 

} 



@end 
+0

간단한 답변은 로그인이 완료된 후에 리디렉션됩니다. DashboardViewController의 위치를 ​​기반으로 리디렉션하는 방법에는 여러 가지가 있습니다. tabbarcontroller의 다른 탭입니까? 그것은 어딘가에 UINavigationController 스택에 있습니까? 그것은 모두 ViewController와 관련된 위치에 따라 다릅니다. – random

+0

StoryBoard에서 설정 한 Tabbar가 아닌 separarte보기 컨트롤러 – Omar

+0

그래서 사용자가 로그인 한 후에 밀어 넣기 만하면됩니까? 이것 좀 봐 http://stackoverflow.com/questions/13987026/ios-push-viewcontroller-from-code-and-storyboard – random

답변

1

예 그것은 페이스 북의 기본 기능을 사용 가능합니다. 사실 나는 내 마지막 프로젝트에서 같은 일이,이 잘 & 날에 의해 테스트 작업의 전체

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user { 
     NSLog(@"email address %@",[user objectForKey:@"email"]); 
    NSLog(@"Token Return %@",[FBSession activeSession].accessTokenData); 
    dashBoardViewController *dashBoard = [[dashBoardViewController alloc]initWithNibName:@"dashBoardViewController" bundle:nil]; 
    [self.navigationController pushViewController:dashBoard animated:NO]; 
} 

도움이 될 수 있습니다보십시오. 사용해보기

2

페이스 북 로그인에 FBLoginView를 사용하고 있다고 생각합니다. 따라서 로그인 프로세스를 완료하면 다음과 같은 방법으로 사용자를 리디렉션 할 수 있습니다. 그리고 당신은 loginView에 줄 필요가있다.

- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView 
{ 
     dashBoardViewController *dashBoard = [[dashBoardViewController alloc]initWithNibName:@"dashBoardViewController" bundle:nil]; 
[self.navigationController pushViewController:dashBoard animated:YES]; 
} 

그리고 같은 방식으로 당신이 방법

- (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView 
{ 
     // Your Code... 
} 

희망을 사용하여도 로그 아웃을 처리 할 수있는이 작동합니다. :)

관련 문제