Я использую restfb 1.6.5 (та же проблема, что и в 1.6.4), и у меня проблемы с получением идентификаторов моих друзей. Это прекрасно работает (me-query):
User fbUserMe = fbClient.fetchObject("me", com.restfb.types.User.class);
logger.debug(fbUserMe.getId());
Тело ответа содержит что-то вроде: {"id":"1234","name":"ME" ...}
и fbUserMe.getId()
возвращает мой идентификатор. С помощью следующего фрагмента кода я хочу получить идентификаторы моих друзей (friends-query):
StringBuffer sb = new StringBuffer();
sb.append("SELECT uid, first_name, last_name FROM user");
sb.append(" WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())");
List<User> users = fbClient.executeQuery(sb.toString(), User.class);
for(User fbUser : users)
{
logger.debug(fbUser.getId());
}
Но это всегда выводит null
, хотя тело ответа содержит это: [{"uid":5678,"first_name":"Peter" ...} ...]
.
Очевидная разница в ответе: id=1234
для me-запроса и uid=5678
для запроса друзей. Если я использую пользовательский класс FqlUser
, как описано в RestFB , я смогу получить uid . Теперь я не уверен в uid . Действительно ли я получаю такой же id (то же самое, что мой друг получит в me-Query), или я получаю что-то вроде third_party_id , описанного в Facebook: FQL-пользователь