Facebook 登录后重定向到新的 ViewController

Posted

技术标签:

【中文标题】Facebook 登录后重定向到新的 ViewController【英文标题】:Redirect to new ViewController after Facebook Login 【发布时间】:2013-12-14 00:46:47 【问题描述】:

我已将 Facebook ios SDK 添加到我的 xCode 项目中,以便用户登录。但是,一旦用户在同一个视图控制器中登录,他们的信息就会从他们的个人资料中简单地更新,并且登录按钮会变为注销。

但是,如果登录成功,我希望用户被重定向到 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

【问题讨论】:

您将在登录完成后调用的方法中重定向是简单的答案。根据 DashboardViewController 的位置,有多种不同的重定向方式。它是标签栏控制器中的另一个标签吗?它是在 UINavigationController 堆栈中的某个地方吗?这完全取决于它与 ViewController 的关系。 它是一个单独的视图控制器,不在标签栏中,在 StoryBoards 中设置 所以你只是想在用户登录后推送到它?看看这个***.com/questions/13987026/… 【参考方案1】:

我认为您正在使用 FBLoginView 进行 Facebook 登录。因此,一旦您完成了登录过程,您可以通过以下方法重定向用户。你需要给 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...

希望,这会奏效。 :)

【讨论】:

【参考方案2】:

是的,可以使用 facebook 默认功能。试试这个可能会有所帮助

- (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];

它工作正常并经过我的测试,实际上我在上一个项目中也有同样的工作。试试看

【讨论】:

以上是关于Facebook 登录后重定向到新的 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

登录成功后重定向到新页面

使用 facebook 登录网站后重定向页面

facebook使用django app成功登录后重定向url

从身份验证对话框登录后重定向到 Facebook 应用程序

Facebook注销按钮并在注销后重定向

如果会话超时,如何在 MVC 中的 jquery ajax 调用后重定向到新页面?