Изменился ли ответ на запросы FB.ui?

Раньше ответ на запрос давал нам массив идентификаторов запроса (как описано здесь http://developers.facebook.com/docs/reference/dialogs/requests/), но кажется, что теперь переменная ответа возвращает два элемента внутри «кому» и «запрос». Чтобы быть строкой идентификаторов пользователей с разделителями-запятыми, а запрос - идентификатором запроса. Это правильно? Я ничего не видел об этом нигде, но это поведение, которое я вижу сейчас.

Обновление Вот очень упрощенная версия моего звонка:

FB.ui({method: 'apprequests', message: 'My Great Request'}, requestCallback);
function requestCallback(response) {
    for(var key in response){
        console.log(key);
        console.log(response[key]);
    }
}

Когда я делаю запрос одному человеку, у переменной response есть два ключа: request и to. Request — это идентификатор запроса, to — это идентификатор человека, которому я отправляю запрос. Однако, если я вызову API-интерфейс графа, используя предоставленный идентификатор запроса, я обнаружу, что пользователь как под «кому», так и «от» равен имени отправителя и fbid.

В качестве альтернативы, если я запрашиваю у нескольких людей, запрос равен одному идентификатору запроса, а to представляет собой массив, содержащий все fbid пользователей, которым были отправлены запросы. Однако, когда я делаю вызов API-интерфейса графа, я снова обнаруживаю, что и «кому», и «от» содержат идентификатор пользователя и имя запрашивающего пользователя.


person keybored    schedule 29.09.2011    source источник


Ответы (3)


Я столкнулся с подобной проблемой вчера. Пришлось исправить мой код. Но сегодня request_ids снова оказались в ответе. Поэтому я снова обновил код. Но на этот раз для работы с обоими типами объектов.

Я нашел документацию здесь (перейдите в раздел «Улучшения производительности») http://developers.facebook.com/blog/post/569/

Но это все равно не объясняет, почему сегодня они отменили это изменение. Или его случайно выпустили вчера.

person Mayank Negi    schedule 30.09.2011

Как и в документации, новый обратный вызов получит object (response), который содержит array (request_ids) идентификаторов запросов:

{
  "request_ids": [
    0: [request_id]
    1: [request_id]
    ...
  ]
}

Итак, я полагаю, вы можете использовать этот модифицированный код:

function requestCallback(response) {
    for( var k in response.request_ids ) {
        console.log(k);
        console.log(response.request_ids[k]);
    }
}
person ifaour    schedule 29.09.2011
comment
Прочитайте мой вопрос еще раз, я говорю, что описанное вами поведение - это то, что я ожидал, а не то, что я вижу. - person keybored; 29.09.2011
comment
Это не происходит со мной! Возможно, ошибка, опубликованная в другом ответе, поможет вам. - person ifaour; 29.09.2011

Здесь уже зарегистрирована ошибка http://developers.facebook.com/bugs/129565473812085.

Пока нет четкой информации, действительно ли ответ изменен или это ошибка.

person Abhinav    schedule 29.09.2011