2013-06-04 4 views
0

Я работаю над приложением, где мне нужно обмениваться видео на Facebook. Когда я попробовал Developer.facebook.com для решения, я нашел use the graph api to upload a video in ios. Он делится видео по API-интерфейсу. Будет ли работать API-интерфейс графика в iOS 6? Пожалуйста, предложите. Также укажите любой пример кода, если у вас есть.Программно обмениваться видео на facebook с помощью приложения iOS 6?

Заранее спасибо.

+1

Проверить Тхи ссылка: http://stackoverflow.com/questions/12861615/upload-video-to-facebook-using-facebook-new-sdk-on-ios-6-0 – mindfreak

ответ

0

да, вы можете сделать это, Facebook просто выпустила новую систему 3.5, которая будет легко работать на iOS5 и iOS6 http://developers.facebook.com/ios/

1

Попробуйте с этим я использовал facebook SDK 3.1 https://developers.facebook.com/ios/

.h файл

#import <FacebookSDK/FacebookSDK.h> 
    extern NSString *const SCSessionStateChangedNotificationCamera; 

.m файл

NSString *const SCSessionStateChangedNotificationCamera = @"com.facebook.Scrumptious:SCSessionStateChangedNotification"; 

    -(IBAction)btnFacebookShareClick:(id)sender { 
    if (![self openSessionWithAllowLoginUI:YES]) { 
      [self showLoginView]; 
     } 
    } 

    #pragma mark - 
    #pragma mark - Facebook Method 

    - (void) performPublishAction:(void (^)(void)) action { 
     if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) { 
      [FBSession.activeSession reauthorizeWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error) { 
       if (!error) { 
        action(); 
       } 
      }]; 
     } 
     else { 
      action(); 
     } 
    } 

    #pragma mark - 
    #pragma mark Facebook Login Code 

    - (void)showLoginView { 
     [self dismissViewControllerAnimated:NO completion:nil]; 
     [self performSelector:@selector(showLoginView1) withObject:nil afterDelay:1.5f]; 
    } 

    - (void)showLoginView1 { 

    } 

    - (void)sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error { 
     switch (state) { 
      case FBSessionStateOpen: { 
       if (self != nil) { 
        [[FBRequest requestForMe] startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 
         if (error) { 
          //error 
         }else{ 
          if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) { 
           NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_actions", @"publish_stream", nil]; 
           [FBSession.activeSession reauthorizeWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error) { 
            if (!error) { 
             [self uploadVideoOnFacebook]; 
            } 
            else { 
             NSLog(@"%@",error); 
            } 
           }]; 
          } 
          else { 
           [self uploadVideoOnFacebook]; 
          } 
         } 
        }]; 
       } 
       FBCacheDescriptor *cacheDescriptor = [FBFriendPickerViewController cacheDescriptor]; 
       [cacheDescriptor prefetchAndCacheForSession:session]; 
      } 
       break; 
      case FBSessionStateClosed: { 
       [self StopSpinner]; 
       UIViewController *topViewController = [self.navigationController topViewController]; 
       UIViewController *modalViewController = [topViewController modalViewController]; 
       if (modalViewController != nil) { 
        [topViewController dismissViewControllerAnimated:YES completion:nil]; 
       } 
       //[self.navigationController popToRootViewControllerAnimated:NO]; 

       [FBSession.activeSession closeAndClearTokenInformation]; 

       [self performSelector:@selector(showLoginView) withObject:nil afterDelay:0.5f]; 
      } 
       break; 
      case FBSessionStateClosedLoginFailed: { 
       [self StopSpinner]; 
       [self performSelector:@selector(showLoginView) withObject:nil afterDelay:0.5f]; 
      } 
       break; 
      default: 
       break; 
     } 

     [[NSNotificationCenter defaultCenter] postNotificationName:SCSessionStateChangedNotificationCamera object:session]; 

     if (error) { 
      UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Error: %@", [CameraViewController FBErrorCodeDescription:error.code]] message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [alertView show]; 
      [alertView release]; 
     } 
    } 

    - (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI { 
     NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_actions", @"publish_stream", nil];  
     return [FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:allowLoginUI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 
      if (!error) { 
       [self sessionStateChanged:session state:state error:error]; 
      } 
      else { 
       NSLog(@"%@",error); 
      } 
     }]; 
    } 

    + (NSString *)FBErrorCodeDescription:(FBErrorCode) code { 
     switch(code){ 
      case FBErrorInvalid :{ 
       return @"FBErrorInvalid"; 
      } 
      case FBErrorOperationCancelled:{ 
       return @"FBErrorOperationCancelled"; 
      } 
      case FBErrorLoginFailedOrCancelled:{ 
       return @"FBErrorLoginFailedOrCancelled"; 
      } 
      case FBErrorRequestConnectionApi:{ 
       return @"FBErrorRequestConnectionApi"; 
      }case FBErrorProtocolMismatch:{ 
       return @"FBErrorProtocolMismatch"; 
      } 
      case FBErrorHTTPError:{ 
       return @"FBErrorHTTPError"; 
      } 
      case FBErrorNonTextMimeTypeReturned:{ 
       return @"FBErrorNonTextMimeTypeReturned"; 
      } 
      case FBErrorNativeDialog:{ 
       return @"FBErrorNativeDialog"; 
      } 
      default: 
       return @"[Unknown]"; 
     } 
    } 

    -(void) uploadVideoOnFacebook { 
     NSURL *pathURL; 
      NSData *videoData; 


       pathURL = [NSURL URLWithString:self.strUploadVideoURL]; 
       videoData = [NSData dataWithContentsOfURL:[NSURL URLWithString:self.strUploadVideoURL]]; 


      NSString *strDesc; 

       strDesc = txtCaption.text; 


      NSDictionary *videoObject = @{@"title": @"application Name",@"description": strDesc,[pathURL absoluteString]: videoData}; 
      FBRequest *uploadRequest = [FBRequest requestWithGraphPath:@"me/videos" parameters:videoObject HTTPMethod:@"POST"]; 
      [self.view setUserInteractionEnabled:NO]; 

      [uploadRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
       if (!error) 
        [AJNotificationView showNoticeInView:self.view type:AJNotificationTypeGreen title:@"Video uploaded successfully" linedBackground:AJLinedBackgroundTypeAnimated hideAfter:3.0]; 
       else 
        [AJNotificationView showNoticeInView:self.view type:AJNotificationTypeRed title:@"Video uploaded error" linedBackground:AJLinedBackgroundTypeAnimated hideAfter:3.0]; 

       [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(popViewAfterMKInfo) userInfo:nil repeats:NO]; 
}]; 
     }