Получите идентификатор друга, используя API Facebook, чтобы пометить загруженную фотографию

У меня есть следующий код

$taggable = (new FacebookRequest(
$session,
'GET',
'/me/friends'
))->execute()->getGraphObject()->asArray();

echo '<pre>' . print_r( $taggable, 1) . '</pre>';

Я пытаюсь получить идентификатор списка друзей, которые также используют приложение, чтобы пользователь мог пометить фотографию с этими друзьями. Прямо сейчас код печатает друзей, которые также используют приложение, их имя и идентификатор. Я хочу, чтобы идентификатор друга подставлялся в параметры «тегов», однако getProperty('id') не работает и выдает ошибку. Я новичок в facebook api, поэтому я не знаком с синтаксисом.

Как получить идентификатор друга для подписки:

 'tags' => '[{\'tag_uid\': \'testing\'}]',

Спасибо


person fondillusions    schedule 29.07.2014    source источник


Ответы (1)


После вызова API вы получите список друзей, например:

{
  "data": [
    {
      "name": "aaa", 
      "id": "111"
    }, 
    {
      "name": "bbb", 
      "id": "222"
    }, 
    {
      "name": "ccc", 
      "id": "333"
    },
    ...
  ]
}

Предполагая, что вы хотите пометить первого человека, вы можете получить идентификатор следующим образом:

$id = $taggable['data'][0]->id;

Это установит $id как 111.

Затем вы можете вызвать API, чтобы пометить фотографию следующим образом:

// set tags object (user_id, and position)
$tags = array( array( 'tag_uid' => $id, 'x' => 0, 'y' => 0 ) );

// call api, with json_encoded $tags
$tag = (new FacebookRequest( $session, 'POST', '/{photo_id}/tags', array( 'tags' => json_encode( $tags ) ) ))->execute()->getGraphObject()->asArray();

// output result
echo '<pre>' . print_r( $tag, 1 ) . '</pre>';
person Niraj Shah    schedule 30.07.2014
comment
У меня проблемы. Я сохранил идентификатор, который хочу пометить, в массиве $id. Затем я использовал implode для создания строки и сохранил ее в $friend_id. Затем я использовал $friend_id вместо $id в параметре тега... однако он возвращает другое число: S. Когда я печатаю строку, она правильно возвращает идентификаторы, но затем изменяется, когда я использую ее в теге. Ты знаешь почему? - person fondillusions; 06.08.2014
comment
@fondillusions структура, возвращаемая графом, представляет собой смесь одного или нескольких массивов и объектов. - person Ellert van Koperen; 28.08.2014
comment
А теперь мой полный комментарий... @fondillusions, структура, возвращаемая графом, представляет собой смесь одного или нескольких массивов и объектов. Взгляните на print_r в верхней части сообщения Нираджа: блок данных представляет собой массив (отмеченный []), внутри которого находятся объекты, каждый из которых содержит имя и поле идентификатора. Самый простой способ использовать его, как вы пытались, — пройтись по массиву, извлечь значения имени и идентификатора (используя -›name и -›id элементов массива) и вставить их в более простой массив. Оттуда вы можете делать такие вещи, как implode. - person Ellert van Koperen; 28.08.2014