tamaño - subir Video a Facebook usando el Marco Social iOS6
subir videos a instagram sin copyright (2)
Quiero publicar un archivo de video en Facebook. Anteriormente usé Facebook iOS SDK3.0 y funciona. Sin embargo, para iOS6 Social Framework, hay un problema.
__block ACAccount * facebookAccount;
ACAccountStore* accountStore = [[ACAccountStore alloc] init];
NSDictionary *options = @{
ACFacebookAppIdKey: @"MY APP ID",
ACFacebookPermissionsKey: @[@"publish_actions", ],
@"ACFacebookAudienceKey": ACFacebookAudienceFriends
};
ACAccountType *facebookAccountType = [accountStore
accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *error) {
if (granted) {
NSArray *accounts = [accountStore
accountsWithAccountType:facebookAccountType];
facebookAccount = [accounts lastObject];
NSLog(@"access to facebook account ok %@", facebookAccount.username);
NSData *videoData = [NSData dataWithContentsOfFile:[self videoFileFullPath]];
NSLog(@"video size = %d", [videoData length]);
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
videoData, @"video.mov",
@"video/quicktime", @"contentType" ,
@"Video title", @"title",
@"Video description", @"description",nil];
NSURL *requestURL = [NSURL URLWithString:@"https://graph.facebook.com/me/videos"];
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodPOST
URL:requestURL
parameters:params];
request.account = facebookAccount;
[request performRequestWithHandler:^(NSData *data, NSHTTPURLResponse *response,NSError * error){
NSLog(@"response = %@", response);
NSLog(@"error = %@", [error localizedDescription]);
}];
} else {
NSLog(@"access to facebook is not granted");
// extra handling here if necesary
}
}];
Aplicación de finalización debido a una excepción no detectada ''NSInvalidArgumentException'', razón: ''- [NSConcreteData _fastCharacterContents]: selector no reconocido enviado a la instancia 0x2097ead0''
Estoy trabajando en el mismo problema. Creo que su error es de ARC y NSData *videoData
se elimina antes de la devolución de performRequestWithHandler
.
Aquí está mi investigación: Primero, los datos de video no pueden ser parte de la lista de parámetros, ya que hará que SLRequest sea inválida y esa es la falla que está experimentando.
Los datos de video deben ir en la sección de partes múltiples de la solicitud.
Ahora, existe la necesidad de asociar los parámetros con los datos multiparte y esa es la parte difícil. Por lo tanto, es necesario usar el atributo de origen para hacer ese enlace.
La fuente requiere una URL en un formato de cadena, lo establece en los parámetros y establece el mismo valor en el campo de nombre de archivo en la solicitud de varias partes.
Deberias hacer eso.
NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/me/videos"];
NSURL *videoPathURL = [[NSURL alloc]initFileURLWithPath:videoPath isDirectory:NO];
NSData *videoData = [NSData dataWithContentsOfFile:videoPath];
NSString *status = @"One step closer.";
NSDictionary *params = @{@"title":status, @"description":status};
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodPOST
URL:url
parameters:params];
[request addMultipartData:videoData
withName:@"source"
type:@"video/quicktime"
filename:[videoPathURL absoluteString]];