Android и Facebook: как использовать язык запросов Facebook (FQL) из приложения Android - PullRequest
1 голос
/ 16 декабря 2010

На этой странице Facebook сообщает, что вы можете каким-то образом использовать Facebook-Query-Language: http://developers.facebook.com/docs/reference/fql/profile

Но я просто не понимаю, как выглядит запрос. На Stackoverflow я просто нахожу примеры того, как использовать FQL с PHP. Но я хочу использовать его из приложения для Android. Кто-нибудь может дать мне URL или примеры кода?

Ответы [ 4 ]

2 голосов
/ 25 апреля 2012

Используя Facebook Android SDK , вызов FQL может быть реализован следующим образом:

 String query = "SELECT name FROM user WHERE uid = me()";
 Bundle params = new Bundle();
 params.putString("method", "fql.query");
 params.putString("query", query);
 mAsyncFacebookRunner.request(null, params, new FQLRequestListener());

, где FQLRequestListener расширяет RequestListener, как и для вызова Graph.

1 голос
/ 02 апреля 2014

См. Эту ссылку https://developers.facebook.com/docs/reference/fql, и вы можете пойти глубже, потому что вы можете щелкнуть по каждому элементу и увидеть все свойства каждого элемента (пример «альбома» здесь: https://developers.facebook.com/docs/reference/fql/album/).

Это пример запроса для получения URL-адреса фотографий альбома с помощью "album_id":

String fqlQuery = "SELECT src FROM photo WHERE album_object_id="+ <your_album_id>;

Это один из способов вызова вашего запроса:

                            Bundle params = new Bundle();                               
                            params.putString("format", "json");
                            params.putString("query", fqlQuery);
                            params.putString("access_token", fbAccessToken);
                            Session session = Session.getActiveSession();
                            Request request = new Request(session, "/fql",
                                    params, HttpMethod.GET,
                                    new Request.Callback() {
                                        public void onCompleted(
                                                Response response) {
                                            Log.i(TAG, "Got results: "
                                                    + response.toString());
                                        }
                                    });
                            Request.executeBatchAsync(request);

Надеюсь, я помог, удачи!:)

0 голосов
/ 12 марта 2011

Я не пробовал, но для вызова fql вы можете попробовать

public String request(String fql)  throws FileNotFoundException, MalformedURLException, IOException {
Bundle parameters = new Bundle
parameters.putString("format", "json");
parameters.putString("query", fql);
parameters.putString("access_token",  mFacebook.getAccessToken());

if (mFacebook.isSessionValid()) {
    params.putString("access_token", mFacebook.getAccessToken());
}
        String url = (fql != null) ? "https://api.facebook.com/method/fql.query" : "https://api.facebook.com/restserver.php";
return Util.openUrl(url, "GET", params);
}

Это должно работать.

Вы должны принять во внимание, что mFacebook является аутентифицированным объектом Facebook (из Facebook Android SDK ). Кроме того, что fql должен быть заполнен форматом, поддерживаемым URL. Например:

select+pic_small+from+profile+where+id+%3D+USERID;

вместо

select pic_small from profile where id=USERID;
0 голосов
/ 16 декабря 2010

Кажется, это работает, если я помещу его в браузер, но я не знаю, как сказать Android Facebook SDK использовать этот запрос: https://api.facebook.com/method/fql.query?query=select+pic_small+from+profile+where+id+%3D+USERID;&access_token=ACCESSTOKEN

...