Лучший способ получить набор имен друзей: JavaScript или сервер? - PullRequest
0 голосов
/ 03 декабря 2011

Я пишу некоторый код для обработки запроса приглашения приложения (FB.ui, method = apprequests) и хотел бы показать пользователю, после отправки приглашения, блок, содержащий изображения и имена пользователей, которым запрос был отправлен. Похоже, что единственный способ сделать это - получить имена всех друзей пользователей с помощью API-вызова / me / friends и прожевать возвращенный объект, вытягивая имена для каждого приглашенного пользователя. C'est la guerre.

У меня есть некоторый код, который делает это, но я немного беспокоюсь о производительности в случае, когда у пользователя большое количество друзей - / me / friends вернет до 5000 друзей без вызова 'next ' ссылка на сайт; Facebook говорит, что средний пользователь имеет около 120-130 друзей. Кажется, есть два способа справиться с этим:

1: сделать все это в браузере, в Javascript; это, безусловно, самое простое, но я беспокоюсь об эффективности реализации Javascript для работы с большим количеством друзей - она ​​должна была бы иметь дело с довольно большим объектом, содержащим всех друзей, и потратить много время поиска в этом большом объекте в поисках правильных.

2: отправить список приглашенных на мой сервер, который вызовет FB, чтобы найти друзей, создать и вернуть список имен пользователей. Моя интуиция говорит, что сервер будет более компетентным (= более быстрым, менее подверженным блокировке) механизмом для выполнения этих действий, возможно, достаточно, чтобы стоить затраты на выполнение вызова из javascript на сервер и обратно .

Но, честно говоря, я действительно не знаю. Есть какие-нибудь мнения, надеюсь, информированные? Я мог бы сделать это в любом случае, но если есть что-то похожее на лучшую практику, я хотел бы следовать этому. Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Вам не нужно запрашивать / меня / друзей.Когда вы делаете вызов FB.ui, происходит обратный вызов, содержащий request_id и (что более важно в этом случае) fbid для приглашенных пользователей.Вы можете искать этого пользователя напрямую, просто позвонив по адресу:https://graph.facebook.com/{FRIEND_FBID}.Эти вызовы, даже с FQL, относительно малы, и вам не нужно беспокоиться о производительности.Ajax-вызовы с Javascript SDK будут работать нормально, как если бы вы отправили параметры запроса на ваш сервер и выполнили их там.Они занимают некоторое время ... но не о чем беспокоиться.


Если ваш apprequests используется в уведомлениях приложений, то, вероятно, вы настроили базу данных и сохранили пользователей, на которые ссылается их FBID, вы также можете запросить вашу собственную базу данных и получить имена, изображения профилей, которые высохранено на пользователях при первом посещении.
1 голос
/ 03 декабря 2011

Вы можете сразу же сделать еще один запрос после отправки запроса приложения. Вот как мы делаем это в приложении Facebook, которое мы создаем:

FB.ui(app_request_options, function(response) {
  if (response && response.request_ids && (! response.error)) {
    //Make another call to get the profile information
    FB.api('', {"ids" : response.request_ids.join(',')}, function(response2) {
      if (response2 && (! response2.error))  {
        for (request_obj in response2) {
          //Do stuff... Update UI, post back to server, etc.
        }
     }
 }

Мы отправляем эту информацию обратно на сервер, но вы можете просто обновить пользовательский интерфейс, указав имя, изображение профиля и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...