2

Я не понимаю, почему этот запрос не работает в Android и "Graph Api Проводник", еслиКод ошибки 2500 Facebook график апи

111891332274505? Поля = albums.fields (идентификатор, название, описание, updated_time , created_time, cover_photo)

код ошибки

код ошибки: 2500 Mensaje Ошибка: {HttpStatus: 400, ERRORCODE: 2500, errorType: OAuthException, errorMessage: Синтаксическая ошибка «Ожидаемый конец строки вместо«? »." по характеру 6: фото 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; 
} 
+0

Вы должны включить свой маркер доступа для пользователя. – hichris123

+0

Спасибо @ hichris123, но как включить токен доступа для пользователя? – TeRRo

+0

Вы прошли аутентификацию OAuth? – hichris123

ответ

7

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

0

К RestFB для java вы можете использовать класс Parameter.

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

-1

У меня была такая же проблема, но с классом 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(); 
+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и укажите ссылку для ссылки. Ответы только на ссылку могут стать недействительными, если связанная страница изменится. –

+0

Хм, я полагаю, это была причина для ее голосования. – Darko

Смежные вопросы