0

我们的 ios 应用程序有问题。问题是,通过 ios 上传似乎不像预期的那样工作。这里真正的问题是我们可以从某些帐户上传,而我们不能从其他帐户上传(尽管我们以前可以这样做)。错误重现步骤如下: - 用户启动我们的应用程序;- 用户登录 facebook 并授予应用程序运行所需的权限;- 用户将视频上传到 Facebook;- facebook 回应上传成功;- 然后消息出现在 facebook 上,该视频无法处理。

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

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

所以,我们基本上想到的是,FB 对来自移动设备的用户有一些垃圾邮件保护限制。

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

将东西发送到 FB 的 PS 代码非常基本:

- (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];});
    }
}];

}

4

1 回答 1

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
}];

希望能帮助到你。

于 2013-07-30T11:10:03.017 回答