Используя Facebook fql, как мне найти школу? - PullRequest
0 голосов
/ 19 июля 2011

[Примечание: первые два ответа, включая тот, который я написал, еще не касаются «необязательной» проблемы fql.multiquery.]

Когда я использую fql в Facebook, я могу получитьсписок школ, которые я посещал, или которые посещали друзья.В частности, я могу получить название школы, и это идентификатор Facebook.Однако я не знаю, как запросить более подробную информацию об этих школах.

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

Как узнать из Facebook, где расположены эти школы?

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

Вот расширенная версия необязательной части, упомянутой в предыдущем абзаце (обратите внимание, что я попытался добавить это как отдельный вопрос, но когда я вошел, чтобы сделать иллюстративные данные более актуальными, я увидел, что они молчаисчез. Поэтому я предполагаю, что я споткнулся о какой-то особенности переполнения стека, предназначенной для того, чтобы отсеять вопросы, которые слишком похожи друг на друга. Вместо этого, давайте просто скажем, что это разъяснение того, что я имел в виду в предыдущем абзаце)1011 *

При использовании javascript sdk в Facebook это происходит молча:

FB.login(function(response){
    disp('loginResponse', response);
    var userQuery= FB.Data.query(
  'select uid,name,education from user where uid= {0}'
      , response.session.uid);

    var friendlist = FB.Data.query(
     'select uid2 from friend where uid1 = {0} order by rand() limit 10'
     , response.session.uid);

    var friends = FB.Data.query(
  'select uid,name,education from user where uid in (select uid2 from {0})'
     , friendlist);

    var friendSchools= FB.Data.query(
  'select page_id,name,location from page where page_id in (select education.school.id from {0})'
  , friends);

    self.queries= [userQuery, friendlist, friends, friendSchools];
    FB.Data.waitOn(queries
      , function() {alert(1)});
    })

Если я удаляю элемент friendSchools из массива запросов, он работает просто отлично, и друга можно представить таким объектом, как этот:

{
  uid: '...',
  name: '...',
  education:
    [
      {
        school:
          {
            id: '115920001751600',
            name: 'Burlington High School'
          },
        year:
          {
            id: '138792749476094',
            name: '1978'
          },
        type: 'High School'
      },
      {
        school:
          {
            id: '20697868961',
            name: 'Boston University'
          },
        degree:
          {
            id: '188387604516411',
            name: 'BS'
          },
        year:
          {
            id: '103823546338323',
            name: '1982'
          },
        type: 'College'
      }
    ]
} 

Итак, как мне реструктурировать предложение where взапрос FriendSchools, чтобы можно было выполнить этот запрос?

Другими словами, как я могу использовать fql.multiquery для поиска информации о школах (или других подобных объектах), возвращенных в другом месте в мультизапросе?

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Я бы предложил использовать пакетные запросы (более подробную информацию здесь: https://developers.facebook.com/docs/reference/api/batch/), чтобы запросить график на основе уже имеющегося у вас идентификатора школы. Местоположение школы можно получить по возвращенной базовой информации по умолчанию (пример ниже ).

{
   "id": "6192688417",
   "name": "Stanford University",
   "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/41571_6192688417_2310209_s.jpg",
   "link": "https://www.facebook.com/stanford",
   "likes": 203153,
   "category": "Education",
   "website": "http://www.stanford.edu",
   "username": "stanford",
   "founded": "1891",
   "location": {
      "street": "450 Serra Mall",
      "city": "Stanford",
      "state": "CA",
      "country": "United States",
      "zip": "94305",
      "latitude": 37.42895,
      "longitude": -122.1697
   },
   "public_transit": "http://transportation.stanford.edu",
   "general_info": "Located between San Francisco and San Jose in the heart of Silicon Valley, Stanford University is recognized as one of the world's leading research and teaching institutions.\n\nLeland and Jane Stanford founded the University to \"promote the public welfare by exercising an influence on behalf of humanity and civilization.\" Stanford opened its doors in 1891, and more than a century later, it remains dedicated to finding solutions to the great challenges of the day and to preparing our students for leadership in today's complex world.",
   "checkins": 9938
}
0 голосов
/ 19 июля 2011

И, похоже, чтобы заставить работать fql, я хочу запросить таблицу страниц.Например:

select name,location from page where page_id = 87873693141

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

...