2

Я пытаюсь получить URL-адрес вложения изображения, опубликованного на странице facebook. Цель состоит в том, чтобы встроить этот образ в веб-страницу, чтобы веб-сайт всегда отображал последнее прикрепленное изображение, опубликованное на странице. У меня есть сайт и страница FB.Facebook Graph API получить вложения в сообщения страницы

Я еще не понял все подробности о работе с Facebook Graph API, но вот то, что я сделал до сих пор:

1) в FB сайте разработчиков, я создал приложение, получить его идентификатор приложения и секрет ;

2) Я использовал эту информацию, чтобы получить маркер доступа (только вставленный в браузере следующий код:

https://graph.facebook.com/oauth/access_token?client_id={my-client-id}&client_secret={my-client-secret}&grant_type=client_credentials 

3) на моем сайте, я загрузил Facebook JS SDK после тега тела; и получил также мой идентификатор страницы Facebook от администрации страницы Facebook;

4) теперь возникает реальный вопрос: как я могу запросить Facebook для получения необходимой мне информации - исходного URL-адреса последнего опубликованного изображения?

Лучший результат я получил до сих пор было, сделав getJSON вызов с помощью JQuery:

var fbfeed = $j.getJSON('https://graph.facebook.com/{my-page-id}/feed?access_token={my-token}&fields=attachments&limit=1'); 

Это будет получать и хранить массив JSON в fbfeed переменной (пожалуйста, поправьте меня, если я неверно). Один из ключей этого массива называется «src», который содержит исходный URL-адрес вложения - информацию, которую мне нужно встроить в мой сайт;

У меня есть следующие проблемы/проблемы: - Я не нашел способ получить значение ключа «url» - как я могу это сделать? Как я могу проанализировать переменную fbfeed и извлечь значение ключа «url»?

- У меня есть проблемы с моим использованием маркера доступа:

  • это проблематично выставить маркер доступа таким образом, используя его в функцию JQuery? Это риск для безопасности? Если да, могу ли я «имитировать» этот запрос, но используя серверный язык, такой как PHP?

  • Срок действия этого токена доступа истекает (т. Е. Будет ли я время от времени повторять шаг 2?). Итак, воображая, что я могу заставить это работать, мне нужно время от времени «обновлять» токен доступа?

Благодарим за помощь.

+1

Да, токен доступа не должен подвергаться в клиентском коде таким образом; Если вы хотите сделать это только на стороне клиента, вы должны позволить пользователю входа в систему войти в ваше приложение, чтобы вы могли использовать свой токен доступа. И, конечно же, вы можете сделать этот запрос и на стороне сервера. // Точки доступа пользователя могут быть продлены до 60 дней, после чего вам придется его обновить. Лучше использовать токен доступа к странице. (Этот, опять же, конечно, не будет принадлежать ни одному клиентскому коду.) – CBroe

ответ

4

Мне удалось получить нужную мне информацию с использованием серверного кода, хотя это может быть не самое «чистое решение»: оно будет проходить через последние 5 сообщений моей страницы, пока не найдет изображение и сообщение url:

<?php 
$url = 'https://graph.facebook.com/{page-id}/feed?access_token={access-token}&fields=attachments,link&limit=5'; 
$json = file_get_contents($url); 
$json_data = json_decode($json, true); 

for($count = 0; $count < 5; $count++) { 

$imagesource = $json_data['data'][$count]['attachments']['data'][0]['media']['image']['src']; // gets the image url 

$postlink = $json_data['data'][$count]['link']; // gets the post url 

if (isset($imagesource) && isset($postlink)) { 
    // do stuff with the image and post url 
    break; 
    }; 

}; 

// then I can do other stuff as fallback if the image url and post url are not found 
+0

Yup! Это было все о том, что поля = привязанности для меня! Спасибо за то, что вы обновили свой вопрос с ответом! – MadTurki

Смежные вопросы