我们的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];});
}
}];
}
答案 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
}];
希望它有所帮助。