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的主要内容,如果未能解决你的问题,请参考以下文章