Код ошибки 2500 API графика Facebook

Я не понимаю, почему этот запрос не работает в Android и "Graph Api Explorer", если он

111891332274505?fields=albums.fields(id,name,description,updated_time,created_time,cover_photo)

Код ошибки

Код ошибки: 2500 Сообщение об ошибке: {HttpStatus: 400, errorCode: 2500, errorType: OAuthException, errorMessage: Синтаксическая ошибка «Ожидается конец строки вместо «?»». в символе 6: photos?access_token=XXXXXXXXXXXX}

Код

     public void getAlbumFacebook () {
     Request request = new Request(session, "/111891332274505?fields=albums.fields(id,name,description,updated_time,created_time,cover_photo)", null, HttpMethod.GET, new Request.Callback() {
        @Override
        public void onCompleted(Response response) {
            GraphObject graphObject = response.getGraphObject();
            FacebookRequestError error = response.getError();

             if (error != null) {
                 DebugLog.log("Error code: " + error.getErrorCode() + " Error mensaje: " + error.toString());

            }

            if (graphObject != null) {
                JSONArray jsonArray = (JSONArray) graphObject.getProperty("data");
                DebugLog.log("JSON Facebook "+ jsonArray.toString());
            } else {
                 DebugLog.log("Es null");

            }
        }
    });

    Request.executeBatchAsync(request);
 }

РЕШЕНИЕ

Я уже смог решить проблему, которую я могу вывести, заключается в том, что класс «Запрос» не может консультироваться со вставленными полями.

В конце концов, что я сделал, так это построил URL-адрес и запросил данные через URL-адрес.

Создать URL

 String id = "111891332274505";
 String url = "https://graph.facebook.com/" + id + "/albums?access_token=" + session.getAccessToken() + "&fields=id,name,description,updated_time";

Запрос кода

     public JSONObject getRequestFromUrl (String url) {
     try {
         httpClient = new DefaultHttpClient();
         HttpGet get = new HttpGet(url);

         HttpResponse httpResponse = httpClient.execute(get);
         HttpEntity responseEntity = httpResponse.getEntity();
         is = responseEntity.getContent();
         DebugLog.log("Estoy aqui");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;

        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");             
        }

        is.close();
        json = sb.toString();
        Log.e("JSON", json);
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    return jObj;
 }

person joselufo    schedule 28.11.2013    source источник
comment
Вам необходимо включить свой токен доступа для пользователя.   -  person hichris123    schedule 28.11.2013
comment
Спасибо @hichris123, но как включить токен доступа для пользователя?   -  person joselufo    schedule 29.11.2013
comment
Вы прошли аутентификацию OAuth?   -  person hichris123    schedule 29.11.2013
comment
Да, я вошел в систему facebook, и объект сеанса открыт, даже если я изменю запрос на этот /111891332274505/albums, работает, но когда я помещаю поля и выдает мне эту ошибку.   -  person joselufo    schedule 29.11.2013
comment
О, посмотри на это. Syntax error "Expected end of string instead of "?"." at character 6: photos?access_token=XXXXXXXXXXXX} Позвольте мне взглянуть на справку по API.   -  person hichris123    schedule 29.11.2013
comment
Кто-нибудь может помочь мне с моим вопросом? :( stackoverflow.com/questions/30430383/   -  person Vitor Guerreiro    schedule 25.05.2015


Ответы (3)


Перед параметром access_token должен стоять знак амперсанда &. Но прямо сейчас перед этим параметром добавляется ?. Проблема заключается в той части кода, которая добавляет ? вместо & в URL.

person Rahil Arora    schedule 28.11.2013

С помощью RestFB для Java вы можете использовать класс Parameter.

Parameter.with("fields", "albums.fields(id,name,description,updated_time,created_time,cover_photo") в вашем примере. (API может измениться)

person Robin Loxley    schedule 25.05.2015

У меня была такая же проблема, но с классом GraphRequest, поэтому я напишу об этом.

GraphRequest сделает такой URL

...facebook.com/111891332274505?fields=albums...?access_token=...

вместо

...facebook.com/111891332274505?fields=albums...&access_token=...

как этому следовало быть.

Решение:

GraphRequest request =  GraphRequest.newGraphPathRequest(access_token, "111891332274505",...);

Bundle parameters = new Bundle();

parameters.putString("fields", "albums...");

request.setParameters(parameters);

request.executeAsync();
person Darko    schedule 28.05.2015