2011-12-20 5 views
11

Я пытаюсь загрузить несколько старых фотографий с датой создания, чтобы они отображались правильно на временной шкале. Существующий api позволяет только передавать сообщение и источник.Загрузить фотографии за прошлую дату

т.е.

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

это единственный способ, которым я могу загрузить фотографии.

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

также не перемещает дату фото.

Я попытался создать сообщение из загрузки фотографий, используя api /feed, но это не позволяет мне сделать существующее фото сообщение. Это делает его ссылкой на ссылку типа.

То, что я хочу, чтобы точно создать объект фото и публиковать следующее:

{ 
    "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

Для чего это стоит, я говорил с Ником Фелтон на Facebook на дек 7, и он показал, что это было невозможно с API, но будет в ближайшее время. Я с нетерпением жду добавления старых фотографий! –

+0

Я думаю, что функция временной шкалы теперь была ориентированной на пользователя функцией, и это еще не доступно для разработчиков. Даже для пользователей функция временной шкалы недоступна для всех ... Поэтому, когда каждая вещь ложна, я надеюсь, что на facebook появится вариант для обработки этих вещей через API – Vijay

ответ

8

Я инженер в FB, но не в команде Platform, поэтому я не на 100% до настоящего времени. Существует недокументированное поле «backdated_time», доступное на загрузчике фотографий в Graph API. Я предполагаю, что это сверхновая, и будет проводиться в течение следующих нескольких недель, но не стесняйтесь попробовать это время (и отчитайтесь здесь!).

По внешнему виду требуется метка ISO-8601.

Команда docs была преследована, чтобы выяснить, что происходит.

Кроме того, DMCS не совсем прав. Инженерам FB (особенно в нашей группе поддержки разработчиков) предлагается пообщаться здесь, чтобы помочь с вопросами, и каждую неделю в нашем блоге разработчиков мы публикуем, сколько вопросов было задано и сколько ответов было задано. Таким образом, есть обязательство получать ответы на ответы SO - см. Пример https://developers.facebook.com/blog/post/625/.

Однако существует разница между поддержкой существующих функций и ошибками/запросами для новых функций. Если у вас есть ошибка или запрос функции, добавьте ее в http://developers.facebook.com/bugs.

Спасибо!

+0

Я попробовал, он работает! Благодаря! Рабочий пример кода в моем ответе. И ..... знаете ли вы, есть ли аналогичное поле для местоположения? Я пробовал несколько догадок (например, «местоположение»), но ничего не сработало. –

+1

Если местоположение уже является местом на графике, тогда 'place' и uid страницы места, вероятно, будут работать – mrtom

+0

Это сработало! Спасибо :) – Alagu

1

Я хотел бы предположить с тем, как новая временная шкала, что это ошибка Facebook или увеличение, которое должно быть сделано в API. Вы отправили это в Facebook?

+0

Я не представил это на Facebook, но я думал, что facebook.stackoverflow.com был способом поговорить с людьми FB. (https://developers.facebook.com/blog/post/545/) – Alagu

+0

Нет, просто товарищи программисты здесь. Вам нужно будет отправить свою ошибку на https://developers.facebook.com/bugs – DMCS

0

Следующий код работает. (Объединяет this FB example код с 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>'; 
} 

?>