Ios 使用Facebook SDK登录后跳转到查看控制器 -(void)viewDidLoad { 委托=(AppDelegate*)[[UIApplication sharedApplication]委托]; birthdaylist=[[birthdaylist alloc]initWithNibName:@“birthdaylist”bundle:nil]; 微调器=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 微调器α=1.0; spinner.center=CGPointMake(130150); [微调器设置隐藏:是]; UIButton*PickFriendsButton=[[UIButton alloc]init]; [PickFriendsButtonSetFrame:(CGRectMake(10020015033)); [PickFriendsButton setBackgroundImage:[UIImage ImageName:@“share_bg.png”]用于状态:UIControlStateNormal]; [PickFriendsButton setTitle:@“Pick Friends”用于状态:UIControlStateNormal]; [PickFriendsButton setTitleColor:[UIColor whiteColor]用于状态:UIControlStateNormal]; [PickFriendsButton.titleLabel setFont:[UIFont fontWithName:@“Politica”大小:15]; [PickFriends按钮添加目标:自我操作:@selector(PickFriends:)for ControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:PickFriendsButton]; [超级视图下载]; FBLoginView*loginview=[[FBLoginView alloc]init]; loginview.frame=CGRectOffset(loginview.frame,5,5); loginview.delegate=self; [self.view addSubview:loginview]; [loginview sizeToFit]; NSArray*权限=[[NSArray alloc]initWithObjects: @“用户生日”@“朋友家乡”, @“好友生日”@“好友位置”@“基本信息”, @“用户位置”, @“用户生日”, @“用户喜欢”, 零]; loginview.readPermissions=权限; } -(无效)loginView显示日志用户:(FBLoginView*)loginView { //首先设置登录模式的按钮 NSLog(“成功”); if(FBSession.activeSession.isOpen) { NSLog(@“令牌:%@,[[FBSession activeSession]accessTokenData]); FBRequest*friendRequest=[FBRequestForGraphPath:@“我/朋友?字段=姓名、照片、生日、地点”]; [friendRequest startWithCompletionHandler:^(FBRequestConnection*连接,id结果,NSError*错误) { NSArray*数据=[result objectForKey:@“数据”]; 用于(FBGraphObject*数据中的朋友) { //NSLog(@“%@”,朋友); [delegate.FriendsStarray添加对象:friend]; NSLog(@“%@:%@:%@”,[朋友姓名],[朋友生日],[朋友id]); } }]; } 如果([delegate.FriendsListaray count]!=0) { NSUserDefaults*standardDefaults=[NSUserDefaults standardUserDefaults]; [[NSUserDefaults standardUserDefaults]同步]; [standardDefaults setObject:delegate.FriendsListaray forKey:@“FriendsListaray”]; [标准默认设置工具:YES forKey:@“登录”]; [标准默认值同步]; NSLog(@“%@,[standardDefaults objectForKey:@“FriendsListaray]”); [self.navigationController pushViewController:birthdaylist动画:是]; } }
无法转到view controller。我不知道。有什么问题吗?有什么想法请帮助我。感谢advance的帮助。首先:Ios 使用Facebook SDK登录后跳转到查看控制器 -(void)viewDidLoad { 委托=(AppDelegate*)[[UIApplication sharedApplication]委托]; birthdaylist=[[birthdaylist alloc]initWithNibName:@“birthdaylist”bundle:nil]; 微调器=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 微调器α=1.0; spinner.center=CGPointMake(130150); [微调器设置隐藏:是]; UIButton*PickFriendsButton=[[UIButton alloc]init]; [PickFriendsButtonSetFrame:(CGRectMake(10020015033)); [PickFriendsButton setBackgroundImage:[UIImage ImageName:@“share_bg.png”]用于状态:UIControlStateNormal]; [PickFriendsButton setTitle:@“Pick Friends”用于状态:UIControlStateNormal]; [PickFriendsButton setTitleColor:[UIColor whiteColor]用于状态:UIControlStateNormal]; [PickFriendsButton.titleLabel setFont:[UIFont fontWithName:@“Politica”大小:15]; [PickFriends按钮添加目标:自我操作:@selector(PickFriends:)for ControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:PickFriendsButton]; [超级视图下载]; FBLoginView*loginview=[[FBLoginView alloc]init]; loginview.frame=CGRectOffset(loginview.frame,5,5); loginview.delegate=self; [self.view addSubview:loginview]; [loginview sizeToFit]; NSArray*权限=[[NSArray alloc]initWithObjects: @“用户生日”@“朋友家乡”, @“好友生日”@“好友位置”@“基本信息”, @“用户位置”, @“用户生日”, @“用户喜欢”, 零]; loginview.readPermissions=权限; } -(无效)loginView显示日志用户:(FBLoginView*)loginView { //首先设置登录模式的按钮 NSLog(“成功”); if(FBSession.activeSession.isOpen) { NSLog(@“令牌:%@,[[FBSession activeSession]accessTokenData]); FBRequest*friendRequest=[FBRequestForGraphPath:@“我/朋友?字段=姓名、照片、生日、地点”]; [friendRequest startWithCompletionHandler:^(FBRequestConnection*连接,id结果,NSError*错误) { NSArray*数据=[result objectForKey:@“数据”]; 用于(FBGraphObject*数据中的朋友) { //NSLog(@“%@”,朋友); [delegate.FriendsStarray添加对象:friend]; NSLog(@“%@:%@:%@”,[朋友姓名],[朋友生日],[朋友id]); } }]; } 如果([delegate.FriendsListaray count]!=0) { NSUserDefaults*standardDefaults=[NSUserDefaults standardUserDefaults]; [[NSUserDefaults standardUserDefaults]同步]; [standardDefaults setObject:delegate.FriendsListaray forKey:@“FriendsListaray”]; [标准默认设置工具:YES forKey:@“登录”]; [标准默认值同步]; NSLog(@“%@,[standardDefaults objectForKey:@“FriendsListaray]”); [self.navigationController pushViewController:birthdaylist动画:是]; } },ios,Ios,无法转到view controller。我不知道。有什么问题吗?有什么想法请帮助我。感谢advance的帮助。首先: 检查您的delegate.friendslistaray中是否包含任何数据。我看到你把它记录下来了。让我们在这里提供这些数据 我会将if([delegate.FriendsListaray count]!=0)中的所有代码删除到friendRequest startWithCompletionHandler块中。当然,在for()之后 如果以上都不适合你。尝试此操作并替换以下代码
- (void)viewDidLoad
{
delegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
birthdaylist=[[BirthdayList alloc]initWithNibName:@"BirthdayList" bundle:nil];
spinner=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.alpha=1.0;
spinner.center=CGPointMake(130, 150);
[spinner setHidden:YES];
UIButton *PickFriendsButton=[[UIButton alloc]init];
[PickFriendsButton setFrame:(CGRectMake(100, 200, 150, 33))];
[PickFriendsButton setBackgroundImage:[UIImage imageNamed:@"share_bg.png"] forState:UIControlStateNormal];
[PickFriendsButton setTitle:@"Pick Friends" forState:UIControlStateNormal];
[PickFriendsButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[PickFriendsButton.titleLabel setFont:[UIFont fontWithName:@"Politica" size:15]];
[PickFriendsButton addTarget:self action:@selector(PickFriends:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:PickFriendsButton];
[super viewDidLoad];
FBLoginView *loginview = [[FBLoginView alloc] init];
loginview.frame = CGRectOffset(loginview.frame, 5, 5);
loginview.delegate = self;
[self.view addSubview:loginview];
[loginview sizeToFit];
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_birthday",@"friends_hometown",
@"friends_birthday",@"friends_location",@"basic_info",
@"user_location",
@"user_birthday",
@"user_likes",
nil];
loginview.readPermissions = permissions;
}
- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView
{
// first get the buttons set for login mode
NSLog(@"success");
if (FBSession.activeSession.isOpen)
{
NSLog(@"TOKEN : %@",[[FBSession activeSession]accessTokenData]);
FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"];
[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
NSArray *data = [result objectForKey:@"data"];
for (FBGraphObject<FBGraphUser> *friend in data)
{
// NSLog(@"%@",friend);
[delegate.friendsListArray addObject:friend];
NSLog(@"%@:%@:%@", [friend name],[friend birthday],[friend id]);
}
}];
}
if ([delegate.friendsListArray count]!=0)
{
NSUserDefaults * standardDefaults=[NSUserDefaults standardUserDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];
[standardDefaults setObject:delegate.friendsListArray forKey:@"FriendsListArray"];
[standardDefaults setBool:YES forKey:@"logged_in"];
[standardDefaults synchronize];
NSLog(@"%@",[standardDefaults objectForKey:@"FriendsListArray"]);
[self.navigationController pushViewController:birthdaylist animated:YES];
}
}
if (FBSession.activeSession.isOpen) {
BirthdayList *birthdaylist=[[BirthdayList alloc]initWithNibName:@"BirthdayList" bundle:nil];
[self.navigationController pushViewController:birthdaylist animated:YES];
}
}
更多示例在您发表评论时,请尝试此操作。我希望您能够解决问题的其余部分
-(无效)loginView显示日志用户:(FBLoginView*)loginView{
- (void)viewDidLoad
{
delegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
birthdaylist=[[BirthdayList alloc]initWithNibName:@"BirthdayList" bundle:nil];
spinner=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.alpha=1.0;
spinner.center=CGPointMake(130, 150);
[spinner setHidden:YES];
UIButton *PickFriendsButton=[[UIButton alloc]init];
[PickFriendsButton setFrame:(CGRectMake(100, 200, 150, 33))];
[PickFriendsButton setBackgroundImage:[UIImage imageNamed:@"share_bg.png"] forState:UIControlStateNormal];
[PickFriendsButton setTitle:@"Pick Friends" forState:UIControlStateNormal];
[PickFriendsButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[PickFriendsButton.titleLabel setFont:[UIFont fontWithName:@"Politica" size:15]];
[PickFriendsButton addTarget:self action:@selector(PickFriends:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:PickFriendsButton];
[super viewDidLoad];
FBLoginView *loginview = [[FBLoginView alloc] init];
loginview.frame = CGRectOffset(loginview.frame, 5, 5);
loginview.delegate = self;
[self.view addSubview:loginview];
[loginview sizeToFit];
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_birthday",@"friends_hometown",
@"friends_birthday",@"friends_location",@"basic_info",
@"user_location",
@"user_birthday",
@"user_likes",
nil];
loginview.readPermissions = permissions;
}
- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView
{
// first get the buttons set for login mode
NSLog(@"success");
if (FBSession.activeSession.isOpen)
{
NSLog(@"TOKEN : %@",[[FBSession activeSession]accessTokenData]);
FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"];
[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
NSArray *data = [result objectForKey:@"data"];
for (FBGraphObject<FBGraphUser> *friend in data)
{
// NSLog(@"%@",friend);
[delegate.friendsListArray addObject:friend];
NSLog(@"%@:%@:%@", [friend name],[friend birthday],[friend id]);
}
}];
}
if ([delegate.friendsListArray count]!=0)
{
NSUserDefaults * standardDefaults=[NSUserDefaults standardUserDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];
[standardDefaults setObject:delegate.friendsListArray forKey:@"FriendsListArray"];
[standardDefaults setBool:YES forKey:@"logged_in"];
[standardDefaults synchronize];
NSLog(@"%@",[standardDefaults objectForKey:@"FriendsListArray"]);
[self.navigationController pushViewController:birthdaylist animated:YES];
}
}
if (FBSession.activeSession.isOpen) {
BirthdayList *birthdaylist=[[BirthdayList alloc]initWithNibName:@"BirthdayList" bundle:nil];
[self.navigationController pushViewController:birthdaylist animated:YES];
}
}
if(FBSession.activeSession.isOpen){
FBRequest*friendRequest=[FBRequestForGraphPath:@“我/朋友?字段=姓名、照片、生日、地点”];
[friendRequest startWithCompletionHandler:^(FBRequestConnection*连接,id结果,NSError*错误)
{
NSArray*数据=[result objectForKey:@“数据”];
用于(FBGraphObject*数据中的朋友)
{
[delegate.FriendsStarray添加对象:friend];
}
如果([delegate.FriendsListaray count]>0){
BirthdayList*BirthdayList=[[BirthdayList alloc]initWithNibName:@“BirthdayList”bundle:nil];
[self.navigationController pushViewController:birthdaylist动画:是];
}否则{
UIAlertView*alertView=[[UIAlertView alloc]initWithTitle:@“错误”消息:@“未找到朋友”委托:自取消按钮:@“确定”其他按钮:无];
[警报视图显示];
}
}];
}
}
}
我已经按你的要求做了。我建议尝试使用以下方法:-
if (FBSession.activeSession.isOpen) {
FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"];
[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
NSArray *data = [result objectForKey:@"data"];
for (FBGraphObject<FBGraphUser> *friend in data)
{
[delegate.friendsListArray addObject:friend];
}
if ([delegate.friendsListArray count] > 0) {
BirthdayList *birthdaylist=[[BirthdayList alloc]initWithNibName:@"BirthdayList" bundle:nil];
[self.navigationController pushViewController:birthdaylist animated:YES];
} else {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Friend not found" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}];
}
}
}
它是一个帮助器方法,用于为
[UIApplicationLegate ApplicationIDBecomeActive:
正确解析的会话状态
Facebook登录流,专门支持应用程序切换登录
e、 g-
- (BOOL)handleOpenURL:(NSURL*)url;
我希望它能解决你的问题。如果您还有疑问,我将详细说明。试试这个-
首先,在应用程序委托中实现所有facebook sdk委托方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// We need to handle URLs by passing them to FBSession in order for SSO authentication to work.
return [FBSession.activeSession handleOpenURL:url];
}
现在,在您的appDelegate中-
- (IBAction)loginWithFacebookButtonTapped:(id)sender
{
IntubeAppDelegate *delegat = (IntubeAppDelegate*)[[UIApplication sharedApplication] delegate];
[delegat doLoginAndSwitch];
}
也可以切换回您的应用程序-
-(void) doLoginAndSwitch
{
[self openSessionWithAllowLoginUI:YES];
}
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI
{
NSArray *permissions = [NSArray arrayWithObjects:@"email", nil];
return [FBSession openActiveSessionWithPublishPermissions:permissions
defaultAudience:FBSessionDefaultAudienceFriends
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session
state:state
error:error];
}];
}
-(BOOL)openSessionWithAllowPublishStreamPermission:(BOOL)allowLoginUI
{
NSArray *permissions = [NSArray arrayWithObjects:@"publish_actions",@"publish_stream", nil];
[[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone completionHandler:^(FBSession *session, NSError *error){
}];
return YES;
}
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState)state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
if(!error)
{
// NSLog(@"FBSessionStateOpen :- logged in");
[self openSessionWithAllowPublishStreamPermission:YES];
// Your code
}
}
}
我希望你现在能得到你想要的 你期望发生什么,而现在又发生了什么?请告诉我们你在问什么--别让我们猜。此外,您发布的许多代码似乎与问题无关——如果您可以简化代码以隔离问题,它将帮助我们帮助您。事实上,简化问题是一种优秀的调试技术——它可以帮助您发现i