2

我知道这个问题被发布了很多次,但我真的没有得到任何可以解决我的问题的建议。我在这个问题上浪费了两天时间,但直到现在我还没有得到任何解决方案。请给予您宝贵的指导。

我想在 Facebook 上发布状态。

  if ([PostType isEqual:@"article"])
    {

        [dict setObject:PostTitle forKey:@"message"];
        params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                  PostTitle, @"message", nil];

        if (FBSession.activeSession.isOpen) {

            // Yes, we are open, so lets make a request for user details so we can get the user name.
            if ([[[FBSession activeSession] permissions]indexOfObject:@"publish_actions"] == NSNotFound) {

                [[FBSession activeSession] requestNewPublishPermissions:[NSArray arrayWithObjects: @"publish_actions",nil] defaultAudience:FBSessionDefaultAudienceFriends
                                                      completionHandler:^(FBSession *session,NSError *error){
                                                          [self promptUserWithAccountName];
                                                      }];

            }else{
                [self promptUserWithAccountName];
            }

            // a custom method - see below:



        } else {


            NSArray *permissions = [[NSArray alloc] initWithObjects:
                                    @"publish_actions",
                                    nil];

            // OPEN Session!
            [FBSession openActiveSessionWithPermissions:permissions
                                           allowLoginUI:YES
                                      completionHandler:^(FBSession *session,
                                                          FBSessionState status,
                                                          NSError *error) {
                                          // if login fails for any reason, we alert
                                          if (error) {

                                              // show error to user.

                                          } else if (FB_ISSESSIONOPENWITHSTATE(status)) {

                                              // no error, so we proceed with requesting user details of current facebook session.

                                              [self promptUserWithAccountName];   // a custom method - see below:
                                          }

                                      }];  
        }

自定义方法:

 -(void)promptUserWithAccountName {
[[FBRequest requestForMe] startWithCompletionHandler:
 ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
     if (!error) {

         [FBRequestConnection startWithGraphPath:@"me/feed"
                                      parameters:params
                                      HTTPMethod:@"POST"
                               completionHandler:^(FBRequestConnection *connection,
                                                   id result,
                                                   NSError *error){

                                   if (!error) {
                                       UIAlertView *tmp = [[UIAlertView alloc]
                                                           initWithTitle:@"Success"
                                                           message:@"Photo Uploaded"
                                                           delegate:self
                                                           cancelButtonTitle:nil
                                                           otherButtonTitles:@"Ok", nil];

                                       [tmp show];

                                   } else {
                                       UIAlertView *tmp = [[UIAlertView alloc]
                                                           initWithTitle:@"Error"
                                                           message:@"Some error happened"
                                                           delegate:self
                                                           cancelButtonTitle:nil
                                                           otherButtonTitles:@"Ok", nil];

                                       [tmp show];

                                   }


                               }];



     }



 }];

 }
4

0 回答 0