2010-02-16 4 views
0

Я создаю сайт, который позволяет пользователям войти в систему, используя свою учетную запись на facebook.Caching facebook profile pics?

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

Я думал, что я мог бы получить адрес изображения оригинала, как это:

$fb=new Facebook($key,$secret); 
$query = "SELECT src_big FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE owner = ".$id." AND name = 'Profile Pictures')"; 
$imgurl = $fb->api_client->fql_query($query); 

http://wiki.developers.facebook.com/index.php/Photo_(FQL)

Но я получаю исключение слова «Требуется сеанс пользователя». Зачем мне нужен сеанс пользователя? Есть ли обходной путь для этого? Как другие сайты решают это?

Если у меня есть сеанс пользователя, он работает для некоторых пользователей, но не для всех. Почему нет?

ответ

1

Правила доступа к фотографии подробно описаны с помощью Photos.get API method.

Конфиденциальность Примечание: Фотографии видны на Платформа Facebook только если владелец фото разрешило призывающую приложение, или владелец Фото не отключил доступ к платформе.

Метод Photos.get является существенным оберткой для запроса Photo FQL table, поэтому он следует тем же правилам.

Спрашивайте пользователей о offline_access extended permission, чтобы вы могли запрашивать свои собственные фотографии, даже если они не в сети. Вам нужно будет хранить свой ключ сеанса в своей базе данных и делать с ним запросы, но это будет означать, что вы можете удалить фотографии пользователей, которые разрешили ваше приложение, когда захотите.

1

Для случая, когда он спорадически работает: некоторые пользователи могут установить настройки конфиденциальности, чтобы запретить приложениям доступ к их фотографиям профиля.

Возможно, некоторые пользователи, возможно, не представили свой профиль pic.

Edit: Из (новые) меню Fb перейдите по ссылке: Account>Privacy Settings>Applications and Websites>What you Share
(На этой странице объясняется, как настройки конфиденциальности пользовательского выбора влияют фб-расширенных веб-сайтов)

Короче говоря, внешний веб-сайт может получить доступ только к тем, что пользователи fb предоставили «« Все ».

+0

Хорошо, вы знаете, где на facebook вы установили эту настройку конфиденциальности? Я не могу найти его. – Martin

+0

Я ввел в ответ правку. –

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