2011-12-20 6 views
11

Sto tentando di caricare alcune vecchie foto con una data di creazione passata in modo che vengano visualizzate correttamente nella sequenza temporale. Esistente api consente solo di passare il messaggio e l'origine.Carica foto per data precedente

cioè

POST https://graph.facebook.com/ALBUM_ID/photos?access_token=xyz 
    ..multipart.form.data.with.message.and.source.. 

è l'unico modo in cui posso caricare le foto.

POST https://graph.facebook.com/PHOTO_ID?access_token=xyz 
    created_time=2010-01-20T09:04Z&updated_time=2010-01-20T09:04Z 

non sposta la data della foto.

Ho provato a creare un post dal caricamento della foto utilizzando l'API /feed, ma non mi consente di creare un post di una foto esistente. Lo rende un post di tipo link.

Quello che voglio creare esattamente un oggetto di foto e pubblicare seguente:

{ 
    "id": "xx_yy", 
    "from": { 
     "name": "My Name", 
     "id": "myfbid" 
    }, 
    "story": "<My Name> added a new photo.", 
    "picture": "<PhotoJPEG>", 
    "link": "<FBPhoto_URL>", 
    "name": "Photo Name", 
    "icon": "https://s-static.ak.facebook.com/rsrc.php/v1/yz/r/StEh3RhPvjk.gif", 
    "actions": [ 
     { 
      "name": "Comment", 
      "link": "https://www.facebook.com/xxx/posts/yy" 
     }, 
     { 
      "name": "Like", 
      "link": "https://www.facebook.com/xx/posts/yy" 
     } 
    ], 
    "privacy": { 
     "description": "Group", 
     "value": "CUSTOM", 
     "friends": "SOME_FRIENDS", 
     "allow": "<GROUPID>" 
    }, 
    "place": { 
     "id": "<placeid>", 
     "name": "<PlaceName>" 
    }, 
    "type": "photo", 
    "object_id": "12345", 
    "created_time": "2010-09-20T13:37:54+0000", 
    "updated_time": "2010-09-20T13:37:54+0000", 
    "comments": { 
     "count": 0 
    } 
    } 
+3

Per quello che vale, ho parlato con Nick Felton Facebook il 7 dicembre e ha indicato che questo non era possibile con l'API, ma sarebbe presto. Non vedo l'ora di aggiungere anche vecchie foto! –

+0

Penso che la funzionalità della timeline fosse ora una funzione incentrata sull'utente e che non è ancora disponibile per gli sviluppatori. Anche per gli utenti la funzione timeline non è disponibile per tutti ... Quindi quando tutto è falso sul posto, spero che Facebook crei un opzione per gestire queste cose tramite l'API – Vijay

risposta

8

Sono un ingegnere in FB, ma non nel team della piattaforma, quindi non sono aggiornato al 100% su questo. È disponibile un campo non documentato 'backdated_time' sull'uploader fotografico nell'API Graph. Presumo che sia super-nuovo e sarà docto nelle prossime settimane, ma sentitevi liberi di provarlo nel frattempo (e riferire qui!).

Ci vuole un timestamp ISO-8601 dal suo aspetto.

Il team di doc è stato inseguito per capire cosa sta succedendo.

Inoltre, DMCS non ha proprio ragione. Gli ingegneri di FB (in particolare quelli del nostro team di supporto per gli sviluppatori) sono incoraggiati a venire qui per rispondere alle domande e ogni settimana sul nostro blog degli sviluppatori pubblichiamo quante domande sono state fatte e quante persone hanno ricevuto risposta. Quindi c'è un impegno a ottenere domande su SO risposto - vedi https://developers.facebook.com/blog/post/625/ come esempio.

Tuttavia, c'è una differenza tra il supporto di funzionalità esistenti e bug/richieste di nuove funzionalità. Se hai una richiesta di bug o funzionalità, aggiungila a http://developers.facebook.com/bugs.

Grazie!

+0

L'ho provato, funziona! Grazie! Codice di esempio di lavoro nella mia risposta. E ... sai se c'è un campo simile per la posizione? Ho provato alcune ipotesi (ad esempio "posizione") ma non ha funzionato. –

+1

Se la posizione è già un punto nel grafico, allora 'place' e l'uid della pagina del luogo funzioneranno probabilmente – mrtom

+0

Ha funzionato! Grazie :) – Alagu

1

Vorrei assumere con il modo nuovo la linea temporale è, che questo è un bug di Facebook o di un miglioramento che deve essere fatto per il API. Hai inviato questo a Facebook?

+0

Non l'ho inviata a Facebook, ma pensavo che facebook.stackoverflow.com fosse il modo di parlare con la gente di FB. (https://developers.facebook.com/blog/post/545/) – Alagu

+0

No, solo colleghi programmatori qui. Dovrai inviare il tuo bug a https://developers.facebook.com/bugs – DMCS

0

Il seguente codice funziona. (Combina this FB example codice con mrtom's undocumented field.)

<?php 

$app_id = "YOUR_APP_ID"; 
$app_secret = "YOUR_APP_SECRET"; 
$post_login_url = "YOUR_POST_LOGIN_URL"; // should be the URL of this script 

$code = $_REQUEST["code"]; 

//Obtain the access_token with publish_stream permission 
if(empty($code)) { 
    $dialog_url= "http://www.facebook.com/dialog/oauth?" 
    . "client_id=" . $app_id 
    . "&redirect_uri=" . urlencode($post_login_url) 
    . "&scope=publish_stream"; 
    echo("<script>top.location.href='" . $dialog_url 
    . "'</script>"); 
} 
else { 

    $token_url="https://graph.facebook.com/oauth/access_token?" 
    . "client_id=" . $app_id 
. "&redirect_uri=" . urlencode($post_login_url) 
    . "&client_secret=" . $app_secret 
    . "&code=" . $code; 
    $response = file_get_contents($token_url); 
    $params = null; 
    parse_str($response, $params); 
    $access_token = $params['access_token']; 

// Show photo upload form to user and post to the Graph URL 
$graph_url= "https://graph.facebook.com/me/photos?" 
. "access_token=" .$access_token; 

echo '<html><body>'; 
echo '<form enctype="multipart/form-data" action="' 
.$graph_url .' "method="POST">'; 
echo 'Please choose a photo: '; 
echo '<input name="source" type="file"><br/><br/>'; 
echo 'Say something about this photo: '; 
echo '<input name="message" 
    type="text" value=""><br/><br/>'; 
echo 'ISO Date for this photo: '; 
echo '<input name="backdated_time" 
    type="text" value=""><br/><br/>'; 

echo '<input type="submit" value="Upload"/><br/>'; 
echo '</form>'; 
echo '</body></html>'; 
} 

?> 
Problemi correlati