Search code examples
androidiosfacebookfacebook-graph-apifacebook-fql

What version of Graph API is exposed via the FB SDK for Android / iOS when running a FQL query?


I have integrated the Facebook SDK 3.6 in Android and I use a FQL query to fetch user data.

Following is the query I use:

if(isNetworkConnected() == true){
                    //Init the LoaderDialog 
                    Asycdialog.setMessage("This might take a while and depends on the speed of your internet connection");
                    Asycdialog.getWindow().setGravity(Gravity.CENTER_VERTICAL);
                    Asycdialog.getWindow().setGravity(Gravity.CENTER_HORIZONTAL);
                    Asycdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    Asycdialog.setCancelable(false);
                    //Dialog Show
                    Asycdialog.show();
                    File dir =new 

                    String fqlQuery = "{" +
                            "'friends':'SELECT uid2 FROM friend WHERE uid1 = me()'," +
                            "'friendinfo':'SELECT uid, name, birthday FROM user WHERE uid IN" +
                            "(SELECT uid2 FROM #friends) AND birthday'"+
                            "}";
                    Bundle params = new Bundle();
                    params.putString("q", fqlQuery);
                    Session session = Session.getActiveSession();
                    Request request = new Request(session,
                            "/fql",                         
                            params,                         
                            HttpMethod.GET,                 
                            new Request.Callback(){         
                        public void onCompleted(Response response) {
                            //new Async().execute(response);

                            new Async().execute(response); 
                        }
                    }); 
                    Request.executeBatchAsync(request);  
                }else{
                    Toast.makeText(getActivity(), "Please check and turn on your internet connection", Toast.LENGTH_LONG).show();
                }

The query works exactly as intended and I get all the requested parameters.

However according to the documentation:

FQL, the Facebook Query Language, allows you to use a SQL-style interface to query data exposed by the Graph API. It provides advanced features not available in the Graph API, including batching multiple queries into a single call.

Question1) Does FQL secretly depend on Graph API - I know it is a Yes - if Yes which version of the Graph API is used when I integrate the respective SDK for iOS or Android? As again according to the Documentation change log:

Graph API

Changes from v1.0 to v2.0 App-scoped User IDs: To better protect people's information, when people log into a version of your app that has been upgraded to use Graph API v2.0, Facebook will now issue an app-scoped ID rather than that person's orginal ID. However, for users that have previously logged into your app, the user ID will not change.

App Friends: The /me/friends endpoint no longer includes the full list of a person's friends. Instead, it now returns the list of that person's friends who are also using your app. All requests to Graph API v2.0 require an access token, except for /{id}/picture. The format of the /me/permissions endpoint has changed. It now includes a list of permissions and a status field denoting if they were granted or declined. Link to docs

Although there is no mention of iOS or Android SDK being impacted by this, what are the measures I would have to take into consideration so that my application does not break. I am looking for answers from Authentic sources and I request the same sources to please make this documentation a bit better, come-on FB YOU can do it?


Solution

  • Have a look at https://developers.facebook.com/docs/apps/upgrading/#upgrading_v2_0_versions_and_path which states that

    You can choose which version of the API you want to use by:

    • ...
    • Integrating the Facebook SDKs for iOS or Android, which are set up to call the latest version of the API that was available on the day the SDK was released.
    • For people making manual calls to our API without an SDK, the version is picked by putting the version in the path when you make an API call (such as graph.facebook.com/v2.0/me).