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 使用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()之后 如果以上都不适合你。尝试此操作并替换以下代码

无法转到view controller。我不知道。有什么问题吗?有什么想法请帮助我。感谢advance的帮助。

首先:

  • 检查您的delegate.friendslistaray中是否包含任何数据。我看到你把它记录下来了。让我们在这里提供这些数据
  • 我会将if([delegate.FriendsListaray count]!=0)中的所有代码删除到friendRequest startWithCompletionHandler块中。当然,在for()之后
  • 如果以上都不适合你。尝试此操作并替换以下代码。然后开始一步一步地编写另一段代码
  • -(无效)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];
       }
    }
    
    更多示例在您发表评论时,请尝试此操作。我希望您能够解决问题的其余部分

    -(无效)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