Выполнить простой запрос FQL с Spring-Social-Facebook в Java
Я был бы признателен за небольшую помощь в реализации библиотеки spring-social-facebook. Я пытаюсь выполнить запрос FQL, но Facebook отправляет мне пустой результат. Если я выполняю тот же запрос в Facebook Graph API Explorer, он работает как шарм. У меня все разрешения проверены. Мой код такой:
private static final String FQL_GET_FRIENDS = "SELECT uid, name FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me())";
Facebook facebook = new FacebookTemplate(token);
List<Reference> references = facebook.userOperations().search(FQL_GET_FRIENDS);
Спасибо вам за ваши предложения
2 ответа
Решение
Хорошо. Это сработало для меня:
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
parameters.set("q", FQL_GET_FRIENDS);
Map<String, Object> resultSet = (Map<String, Object>) facebookTemplate
.fetchObject("fql", Map.class, parameters);
Я сделал то же самое с помощью простого HTTP-запроса Get к "faceBookURL" с действительным токеном с достаточными разрешениями, вы можете использовать это:
private static String STR_FACEBOOK_FQL_URL = "https://api.facebook.com/method/fql.query?query=";
private static String STR_FACEBOOK_RETURN_FORMAT = "&format=json";
private static String STR_FACEBOOK_ENCODE_FORMAT = "UTF-8";
private static String STR_FACEBOOK_ACCESS_TOKEN = "&access_token=";
private static final String FQL_GET_FRIENDS = "SELECT uid, name FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me())";
String encodedQuery = URLEncoder.encode(FQL_GET_FRIENDS, STR_FACEBOOK_ENCODE_FORMAT);
String faceBookURL = STR_FACEBOOK_FQL_URL + encodedQuery + STR_FACEBOOK_RETURN_FORMAT
+ STR_FACEBOOK_ACCESS_TOKEN + token;