Новый API-интерфейс с графическим API-интерфейсом - Приложение не отображается

У меня возникла странная проблема с графическим API, ниже приведен код, который использовался для меня, добавляя сообщение в ленту новостей пользователей с миниатюрой прикрепленной фотографии (ссылка на параметр "object_attachement" ).

Однако теперь сообщение создается, как и ожидалось, но миниатюра пуста. Photo_id, который я использую, существует в коллекции фотографий пользователя.

Results of below code now.

    $photo_ID = "3415678920211";//Valid Facebook Photo ID...        
    $facebook = new Facebook($config);

    $attachment =  array(
            'access_token' => $user_token,
            'message' => "Test Message",
            'caption' => "THis is a Caption",
            'name' => "Test Name",
            'description' => "This is a description",
            'link' => 'http://url.com/',
            'object_attachment' => $photo_id,
    );

    $response = $facebook->api("/".$userID."/feed/", 'POST', $attachment);

Я что-то делаю неправильно? Я уверен, что это действительно помогло работать и задаться вопросом, изменилось ли что-то в API под мной.

[Обновление] Я заметил, что это происходит, когда я указываю ссылку и object_attachment в том же POST. Если я удалю параметр связи из вышеизложенного, я получу немного лучшее обновление, но это не так хорошо, поскольку основная причина, по которой я хочу, чтобы этот пост существовал, - это добавление ссылки.

Ответ 1

Я предполагаю, что пользователь дал разрешение для user_photos/friends_photos. Поскольку у вас есть photo_id, вы можете попробовать это.

$pic = $facebook->api("/PHOTO_ID");
$pic_url = $pic->source;

$attachment =  array(
    'access_token' => USER_ACCESS_TOKEN,
    'message'      => "...",
    'caption'      => "...",
    'name'         => "...",
    'description'  => "...",
    'link'         => URL,
    'picture'      => $pic_url
);

ADDED

Вам нужно сохранить изображение, где локально, на локальном сервере. из-за этого статьи

Ответ 2

Я думаю, что 'object_attachment'=>$photo_id больше не будет работать. Вы должны изменить его на 'picture'=>$photo_url

$photo_Url = "link to your photo";//Valid Facebook Photo ID...        
$facebook = new Facebook($config);

$attachment =  array(
        'access_token' => $user_token,
        'message' => "Test Message",
        'caption' => "THis is a Caption",
        'name' => "Test Name",
        'description' => "This is a description",
        'link' => 'http://url.com/',
        'picture' => $photo_Url,
);

$response = $facebook->api("/".$userID."/feed/", 'POST', $attachment);

Вы можете найти более Здесь

Ответ 3

у вас есть разрешение pubish_stream на вашем приложении, а затем попробуйте сделать это с помощью curl: -

$attachment =  array(
        'access_token' => $access_token,
        'message' => 'i m success to using graph api for post wall',
        'name' => 'Wall Post using graph api',
        'link' => 'www.mysite.com',
        'description' => 'Using the Graph API, any Facebook users Wall feed may be accessed by using this URL:',
        'picture'=>'http://example.com/images/noimage.png'
 );
$url = "https://graph.facebook.com/$facebook_id/feed";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output
$result = curl_exec($ch);
curl_close ($ch);
print_r($result)

Ответ 4

Вы отправляете в фид. Вместо этого вы должны отправить сообщение в LINK.

Отправьте ссылку на картинку в канал ссылок, и все будет в порядке.

https://developers.facebook.com/docs/reference/api/link/

Я поставлю пример в тике.

---- Позже ----

Хмммм, ну ссылка не удовлетворительна. Вы получите миниатюру картинки, и вы можете щелкнуть ее, чтобы увидеть картинку в полном объеме, но ее очень уродливая. Я действительно не думаю, что это то, что вам нужно.

Итак, я сделал еще несколько экспериментов и продолжал сталкиваться с этой ошибкой CDN, о которой вы говорили. Таким образом, я googled и нашел следующее:

Обслуживание изображений в потоковых потоках 18 июня 2010 г. 15:21

Мы больше не разрешаем потоковым потокам содержать изображения, размещенные в домене fbcdn.net. Изображения, связанные с этими URL-адресами, не всегда оптимизированы для потоковых историй и иногда приводят к ошибкам, что приводит к плохой работе с пользователями. Убедитесь, что ваши потоковые вложения не ссылаются на изображения с этим доменом. Вы должны размещать изображения локально.

Итак, у вас есть это, согласно Facebook, вы больше не можете делать то, что хотите.