5

Di tutte le ricerche che ho fatto su questo argomento, il 90% di esso è obsoleto, il che mi fa pensare che ci siano state recenti modifiche al Facebook JS SDK riguardante la condivisione esplicita di storie di grafici aperti. Ho il seguente codice:Genera dinamicamente la descrizione per la storia del grafico aperto esplicitamente condivisa tramite FB.ui Condividi Dialog

function postToFB(desc){ 
FB.ui({ 
    method: 'share_open_graph', 
    action_type: 'mynamespace:myaction', 
    action_properties: JSON.stringify({ 
     myobject: "myobjectid" 
    }) 
}, function(response){}); 
} 

Il problema di questo è che tenterà di condividere myobject con solo le impostazioni che ho istituito nella sezione Facebook Open Graph delle mie impostazioni dell'applicazione. Vorrei utilizzare lo stesso oggetto, ma modificare la descrizione con una variabile 'desc' dinamica ogni volta che viene condivisa. Qualcuno sa come realizzare questo? Posso impostare staticamente la didascalia nella sezione Facebook Open Graph delle impostazioni della mia app, ma ho bisogno di impostarla dinamicamente ogni volta che la condivido.

Ho cercato attraverso l'SDK JS di Facebook per coppie chiave/valore aggiuntive che possono essere aggiunte a action_properties, ma le informazioni dell'SDK sono molto limitate a questo proposito.

UPDATE

ho modificato il codice per includere 2 chiamate, uno per creare l'oggetto e il secondo di pubblicare la storia con le informazioni del nuovo oggetto. Ecco il codice:

function postToFB(desc){ 
FB.api(
    'me/objects/mynamespace:myobject', 
    'post', 
    { 
    object: { 
     "app_id": myappid, 
     "type": "mynamespace:myobject", 
     "url": "myurl", 
     "title": "mytitle", 
     "image": "myimgurl", 
     "description": desc 
     } 
    }, 
    function(response) { 
     console.log(response); 
     FB.ui({ 
      method: 'share_open_graph', 
      action_type: 'mynamespace:myaction', 
      action_properties: JSON.stringify({ 
       myobject: response.id 
     }) 
    }, function(r){}); 
}); 
} 

Tuttavia, secondo i commenti su questa domanda: Facebook object API - duplicate objects created un membro dello staff di Facebook ha detto questo approccio non sarà approvato da parte di Facebook, perché un'azione da un utente non è in grado di produrre due posti, che questo codice ora lo fa. Uno pubblicherà l'oggetto sul registro delle attività dell'utente di Facebook e uno lo pubblicherà nel registro delle attività e nel feed delle notizie.

Sarebbe bello se potessi effettuare una sola chiamata e stabilire quale dovrebbe essere la descrizione del mio oggetto dalla funzione FB.ui. Qualcuno sa come fare questo?

risposta

5

L'ho capito. Il problema principale che stavo avendo è stato postare su me/objects (che avrebbe postato un evento nel log delle attività dell'utente) quando avrei dovuto postare su app/objects (che avrebbe creato l'oggetto ma non postare un evento). Dal momento che la pubblicazione di app/qualsiasi cosa richiede un token di accesso, ho dovuto cambiare la chiamata iniziale per accadere sul lato server in PHP:

$request = new FacebookRequest( 
null, 
'POST', 
'/app/objects/mynamespace:myobject', 
array(
     'access_token' => 'myaccesstoken', 
    'object' => json_encode(array(
     'app_id' => myappid, 
      'url' => 'myurl', 
      'title' => 'mytitle', 
      'image' => 'myimg', 
      'description' => 'mydesc' 
     )) 
) 
); 
$response = $request->execute(); 
$obj = $response->getGraphObject(); 
echo $obj->getProperty('id'); 

Da lì ho potuto utilizzare lo script JS di inviare l'oggetto con il nuovo ID al feed dell'utente.

La speranza che ti impedisce di passare 2 giorni e mezzo cercando di capirlo da solo come ho fatto io.