Вопрос по social-networking, facebook-graph-api, facebook, facebook-fql – Как получить только друзей с загруженными фотографиями профиля и игнорировать тех пользователей с силуэтом по умолчанию?

1

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

Есть ли альтернативы?

Проблема с этим подходом заключается в том, что мне все равно нужно сделать2x Запросы. Gajus
Не могли бы вы определить, что будет друг без фото? Вы имеете в виду фотографию для отображения тестовых пользователей? phwd
Может быть, все не-фотографии имеют только это изображениеhttps://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v2/yL/r/HsTZSDw4avx.gif , Вы можете проверить, является ли URL изображения таким. Jashwant
Просто попытался использовать этот подход, хотя это не вариант. Требуется 10 секунд, чтобы проверить данные с 500 друзьями. Gajus
Это друг без фотоgraph.facebook.com/37005951/picture?type=large Gajus

Ваш Ответ

2   ответа
1

Это может быть достигнуто с помощью простого FQL.

SELECT uid, name, pic_small FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND pic_small != 'https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yP/r/FdhqUFlRalU.jpg'

Seb-запрос получит весь твой другuids, Другой запрос будет совпадать с идентификаторами данных профиля, еслиpic_small относится к тому, что Facebook использует в качествезаполнитель.

Вы можете быстро проверить этоВот.

1

Хотя Gajus & # x2019; предлагаемый запросmight работать сейчас, он сломается, как только Facebook изменит URL-адрес изображения по умолчанию в их CDN. (Может случиться, может и не случиться.)

Поэтому я бы предложил это для улучшения:

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

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

SELECT uid, name FROM user WHERE uid IN
  (SELECT id FROM profile_pic WHERE
    id IN (SELECT uid1 FROM friend WHERE uid2 = me() )
    AND NOT is_silhouette
  )

& # X2013; & GT;Попробуйте этот запрос в Graph API Explorer.

Определенно более надежный. Gajus

Похожие вопросы