2015-06-26 2 views
1

Я часто получаю фотографии Facebook, чтобы летать на сайты для клиентов. Они всегда работают некоторое время, а затем внезапно перестают работать.Facebook Graph token hell

Я прочитал в стеке, что это проблема с токеном, но я не понимаю, как мой JSON-вызов мог когда-либо работать, учитывая, что у меня никогда не было кода для получения токена. Вызов JSON, как это работает в течение недели или около того, перестает работать. И не имеет значения, что эти альбомы с фотографиями устанавливаются владельцем.

$.getJSON('https://graph.facebook.com/616894958361877/photos?limit=100&callback=?', function(json) { 
    $.each(json.data, function(i, photo) { 
     $('<li></li>').append('<span class="thumb" style="background: url(' + ((photo.images[1]) ? photo.images[1].source : '') + ') center center no-repeat; background-size: cover;"><a href=' + ((photo.images[0]) ? photo.images[0].source : '') + ' rel="gallery"></a></span>').appendTo('#timeline'); 
    }); 
}); 

Может кто-нибудь дать мне пример кода о том, как постоянно исправить это? Я получаю ссылки на страницы справки графа facebook, объясняющие токены и разрешения, но я просто не понимаю, как применить его к моей ситуации. Большинство из них относится к приложениям, которые не являются моей ситуацией.

+1

Начало использования маркера доступа – WizKid

+1

_ «Большинство из них относится к приложениям, которые не являются моей ситуацией» _ - вы _need_, чтобы использовать приложение, потому что без приложения, токена доступа и без токена доступа нет данных из API (который является новым с API v2). Если вы хотите сделать это на стороне клиента, вам нужно будет ввести логин пользователя в свое приложение, чтобы вы могли использовать токен доступа к ним. Ваша альтернатива - запросить сервер данных на стороне; то вы можете использовать токен доступа к доступу для получения общедоступных данных. (Ток доступа к приложению делает __never__ принадлежащим клиентскому коду.) – CBroe

ответ

1

Похоже, что вы делали звонки, не имея доступ Токена на всех, к данным, которые публично видны на Facebook.com

v1.0 граф API Facebook было устаревшим в апреле 2014 года и запланированы удаление после 2015- 04-30 - одно из изменений между версиями v1.0 и v2.0 состояло в том, что во v2.0 для всех вызовов требуется токен доступа - устаревшая версия v1.0 была поэтапной, и одной из последних вещей, которые нужно удалить, была способность сделать tokenless звонков - возможно, именно поэтому вы не замечали этого до недавнего времени

Более подробной информации о журнале изменений здесь: https://developers.facebook.com/docs/apps/changelog#v2_0 - в разделе «Изменения от версии 1.0 до версии v2.0»

Вам нужно будет переписать приложение, чтобы его вызовы API с использованием токена доступа у пользователя, который может видеть контент, который вы пытаетесь создать, или (возможно) с помощью токена доступа вашего приложения (и если у вас нет маркер вообще, вам также может понадобиться создать идентификатор приложения для этой цели)

0

Я наконец понял, что с 1 мая необходимо, чтобы создать приложение, а затем сгенерировать токен и использовать его в моем вызове JSON URL.

Так что:

$.getJSON('https://graph.facebook.com/616894958361877/photos?limit=100&callback=? 

Стала это:

$.getJSON('https://graph.facebook.com/616894958361877/photos?access_token=123456789123456789|ajdkajdlajfldkeieflejejf&limit=100&callback=? 

Я заменил мой фактический маркер со случайными числами, но это в основном гигантская строка букв и цифр, с трубкой в средний.

Для меня запутанная часть нуждается в «приложении», когда я не использую мобильное устройство. Я также не понимал, что Facebook фактически осудил старый метод.

Создание приложения просто ... иди сюда и следуйте инструкциям:

https://developers.facebook.com/apps/

Оставьте поле «NameSpace» пустой ... не уверен, что это именно то, и это не требуется.

Создание последовательности токенов потребовало еще нескольких шагов, которые меня посетил друг от работы ... Я не могу вспомнить с головы, но как только вы получите строку и вставьте ее в свой JSON-вызов, это определенно сработает.

REASON для этого, когда Facebook получает запрос данных с некоторого случайного веб-сайта, запрос поставляется со встроенным идентификатором, поэтому Facebook знает, кто запрашивает данные.

0

Вам нужен токен доступа к приложениям.

Перейти к http://developers.facebook.com/apps/ и создать приложение для страницы клиента на Facebook. Когда вам будут предоставлены варианты, выберите тип приложения «Веб-сайт». Вы можете пропустить параметр конфигурации, нажав кнопку «Пропустить и создать идентификатор приложения» в верхнем правом углу.

Дайте ему отображаемое имя, не беспокойтесь о пространстве имен и присвойте ему применимую категорию.

Как только приложение будет создано, перейдите в «Инструменты & Поддержка»> «Инструмент доступа к токенам» в верхнем меню.

Вы должны увидеть значок приложения, указанный в зеленом тексте. Скопируйте это в свой JSON-вызов, и он должен работать.

$.getJSON('https://graph.facebook.com/616894958361877/photos?access_token=PASTE_APP_TOKEN_HERE&limit=100&callback=?', function(json) { 
$.each(json.data, function(i, photo) { 
    $('<li></li>').append('<span class="thumb" style="background: url(' + ((photo.images[1]) ? photo.images[1].source : '') + ') center center no-repeat; background-size: cover;"><a href=' + ((photo.images[0]) ? photo.images[0].source : '') + ' rel="gallery"></a></span>').appendTo('#timeline'); 
}); 

});