使用Social.framework和FB SDK从iPhone上传Facebook视频

时间:2013-03-14 15:06:33

标签: facebook facebook-graph-api video file-upload facebook-ios-sdk

我们的ios应用程序遇到了问题。那就是,通过ios上传似乎并不像预期的那样有效。这里真正的问题是,我们能够从某些帐户上传,而我们无法从其他帐户上传(尽管我们之前可以这样做)。错误再现步骤如下: - 用户启动我们的应用程序; - 用户登录Facebook并为应用程序提供必要的权限; - 用户将视频上传到Facebook; - Facebook响应上传成功; - 然后Facebook上显示消息,该视频无法处理。

此视频已从其他帐户成功上传。

最奇怪的是,我们成功上传的视频会在一段时间后从Facebook页面消失。

因此,我们基本上在考虑的是,FB对移动设备的用户有一些垃圾邮件保护限制。

那么,我要问的是,是否有人也有这样的问题?

P.S。将内容发送到FB的代码非常基本:

- (void)uploadVideoToFacebookFromFileURL:(NSURL *)url parameters:(NSDictionary *)parameters {
SLRequest *uploadRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                              requestMethod:SLRequestMethodPOST
                                                        URL:[NSURL URLWithString:kFBVideoURLString]
                                                 parameters:parameters];

NSData *videoData = [NSData dataWithContentsOfURL:url options:NSDataReadingMappedAlways error:NULL];

[uploadRequest addMultipartData:videoData
                       withName:@"source"
                           type:@"video/x-m4v"
                       filename:[url absoluteString]];

uploadRequest.account = self.socialAccount;

IDPLoadingView *loadingView = [IDPLoadingView loadingViewInView:self.view];
[uploadRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{[loadingView removeFromSuperview];});
    NSString *responseString = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];
    if(error){
        NSLog(@"Error %@", error.localizedDescription);
        dispatch_async(dispatch_get_main_queue(), ^{[self showErrorSending];});
    } else {
        NSLog(@"%@", responseString);
        dispatch_async(dispatch_get_main_queue(), ^{[self showResult];});
    }
}];

}

1 个答案:

答案 0 :(得分:0)

您必须提出2个不同的请求..首先是读取权限,然后是首次使用后登录Facebook用户的发布权限

NSArray * p = [NSArray arrayWithObjects:@"email", nil];

NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:@"fb_app_id",ACFacebookAppIdKey,p,ACFacebookPermissionsKey,ACFacebookAudienceEveryone,ACFacebookAudienceKey, nil];



    NSDictionary *options = @{
                              ACFacebookAppIdKey: @"fb_app_id",
                              ACFacebookPermissionsKey: @[@"publish_actions", ],
                              @"ACFacebookAudienceKey": ACFacebookAudienceFriends,
                              };
    ACAccountType *facebookAccountType = [accountStore
                                          accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    [accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
        NSLog(@"blablalba");
      //do nothing here.

    }];

    [accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *error) {
 //code for upload here
}];

希望它有所帮助。