2013-03-16 71 views
0

我在我的一个应用程序中使用FacebookSDK登录到应用程序并共享一些内容。登录完成后,我现在可以使用此SDK登录到应用程序。以下是我用于登录的代码。使用FacebookSDK从iOS应用程序发布到Facebook

-(void)didSelectLoginWithFB 
{ 
    if (FBSession.activeSession.isOpen) { 
     [appDelegate closeSession]; 
    } 
    else { 
     [appDelegate openSessionWithAllowLoginUI:YES]; 
    } 

    if(FBSession.activeSession.accessToken){ 

     [self performSelector:@selector(FBLoginAction) withObject:nil]; 
    } 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(FBLoginDidFinish:) 
               name:@"FBLoginDidFinish" 
               object:appDelegate]; 

} 

-(void)FBLoginDidFinish:(NSNotification *)notification 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [self performSelector:@selector(FBLoginAction) withObject:nil]; 

    } 

-(void)FBLoginAction 
{ 
    if (FBSession.activeSession.isOpen) { 

    [[FBRequest requestForMe] startWithCompletionHandler: 
     ^(FBRequestConnection *connection, 
      NSDictionary<FBGraphUser> *user, 

      NSError *error) { 
      if (!error) { 

       NSDictionary *userInfo = (NSDictionary *)user; 
       NSLog(@"User dic %@",userInfo); 
//     fbUserId = user.id; 
//     NSLog(@"User dic %@",fbUserId); 

       userMail = [userInfo objectForKey:@"email"]; 
       NSLog(@"User E Mail --- %@", userMail); 
        loginFlag = 200; 
       [self getDataFromServer:nil]; 
      } 

      else{ 

       UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Facebook Connection Error !!" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil ]; 
       [alert show]; 
      } 

     }]; 



    } 

} 

现在,我想发布一些东西到用户的facebook墙(时间线)。我如何使用此SDK来做到这一点?我没有从这个sdk的developer.facebook.com获得任何信息。 请帮忙!

回答

3

我知道这是非常晚了,但我希望它会帮助..

您可以使用下面的代码来发布用户的墙上创建/ timeline-

- (void)postToFacebook{ 

    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 

    if (appDelegate.session.state != FBSessionStateCreated || !appDelegate.session.isOpen){ 

     // Create a new, logged out session. 
     NSArray *permissions = [NSArray arrayWithObject:@"publish_actions, publish_stream"]; 
     appDelegate.session = [[FBSession alloc] initWithPermissions:permissions]; 

     // if the session isn't open, let's open it now and present the login UX to the user 
     [appDelegate.session openWithCompletionHandler:^(FBSession *session, 
                 FBSessionState status, 
                 NSError *error) { 
      if (appDelegate.session.state!=258 && appDelegate.session.state!=257) { 

       [self postOpenGraphAction]; 
      } 
     }]; 
    }else{ 
     if (appDelegate.session.isOpen) { 
      [self postOpenGraphAction]; 
     } 
    } 
} 

- (void)postOpenGraphAction { 

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"", @"picture", @"", @"name", @"", @"link", @"", @"caption", @"", @"description", @"Your message to post", @"message", nil]; 

    AppDelegate *appDelegate = (AppDelegate *) [UIApplication sharedApplication].delegate; 
    [FBSession setActiveSession:appDelegate.session]; 

    [FBRequestConnection startWithGraphPath:@"me/feed" parameters:params HTTPMethod:@"POST" 
          completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
           if (error) { 
            NSLog(@"Error on publishing story: %@", error); 
           } else { 
                  NSLog(@"Published on wall successfully"); 
           } 
          }]; 
} 

我已经使用会话对象在我的AppDelegate中,而不是FBSession的activeSession。 您可以按照您的代码使用。

相关问题