5

Sto tentando di utilizzare Facebook iOS SDK 3.5 per pubblicare un'azione Open Graph. La mia azione è: take a photo e photo ha una proprietà aggiuntiva string denominata filter.Facebook non accetta proprietà Open Graph personalizzate

sto creando il mio oggetto grafico (tutti i valori sono validi e di lavoro):

NSMutableDictionary<FBOpenGraphObject> *object = 
[FBGraphObject openGraphObjectForPostWithType:@"tonerapp:photo" 
               title:@"photo" 
               image:imageData 
                url:nil 
              description:title]; 

poi aggiungo il mio filtro:

object[@"tonerapp:filter"] = filterName;

cerco di inviare l'oggetto, ed io posso confermare che la proprietà del mio filtro è presente (abilitato il comportamento di registrazione di FBSetting per le richieste URL per mostrare i dati della richiesta):

Body (w/o attachments): 
object: {"description":"","type":"tonerapp:photo", 
"tonerapp:filter":"classic","data":{}, 
"fbsdk:create_object":true, 
"image":{"url":"fbstaging:\/\/graph.facebook.com\/staging_resources\/MDExMDE1MjkzNzU1Njc3MDE0MjoxNTM4NzgwNjUy","user_generated":"true"}, 
"title":"photo"} 

posso vedere la mia proprietà filtro lì, ma la risposta è questa:

error = { 
     code = 100; 
     message = "(#100) Object Missing a Required Value: 
Object at URL '' of type 'tonerapp:photo' is invalid because 
a required property 'tonerapp:filter' of type 'string' was not provided."; 
     type = OAuthException; 
    }; 

Beh, è ​​lì. Ho provato tutte le combinazioni possibili, quali:

object[@"data"] = @{@"tonerapp:filter": filterName}; // involucro nei dati oggetto

object[@"data"] = @{@"filter": filterName}; // involucro in dati e la rimozione dello spazio dei nomi

object[@"toner:filter"] = filterName; // nome dell'applicazione invece del nome del namespace

object[@"filter"] = filterName; // nessun nome del namespace

[object setObject:filterName forKey:@"tonerapp:filter"]; // setobject notation

[object setValue:filterName forKey:@"tonerapp:filter"]; // setvalue notazione

[object setObject:filterName forKey:@"filter"]; // setObject e senza namespace ...

e forse più. Ho provato tutto, ma l'API fallisce sempre con lo stesso errore. Posso verificare che il resto dell'oggetto sia corretto, se apro la mia app in Facebook e imposta filter come optional anziché required, invia correttamente. È un bug/documentazione insufficiente con l'API Graph o sono così cieco da non riuscire a vedere qualcosa di ovvio?

Grazie, Can.

+0

avete risolto questo problema? (Ho avuto un problema simile a me stesso: http://stackoverflow.com/q/20376634/824515) – Magnus

+0

da quello che ricordo, (è passato un po 'di tempo e ho dimenticato di rispondere alla mia stessa domanda allora) sulla proprietà dell'URL. la descrizione dell'errore era fuorviante.ho usato '[FBGraphObject openGraphObjectForPostWithType: @" tonerapp: photo " title: title image: imageData url: @" http://tonerapp.info " descrizione: desc];' e funziona. prova a inserire un URL durante la pubblicazione. –

+0

@Magnus per favore dimmi se risolve il problema in modo da poter aggiungere una risposta, forse è possibile aggiungere una risposta direttamente qui sotto. –

risposta

0

Assicurarsi che il filtroName sia codificato URL. Ho avuto lo stesso tipo di problema con il nome di un film che era anche un'azione personalizzata sul grafico. Prova solo a pubblicare un valore manuale solo una semplice stringa e faccelo sapere.

4

basta metterli sotto "Dati"

object[@"data"][@"youcustomproperty"] = @"smth";