错误代码2500 Facebook图表api

时间:2013-11-28 17:49:33

标签: android facebook facebook-graph-api facebook-android-sdk facebook-sdk-3.0

我不明白为什么这个查询在android和“Graph Api Explorer”中不起作用

  

111891332274505?字段= albums.fields(ID,名称,描述,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);
 }

我已经能够解决我可以推断出的问题是“请求”类无法查询插入的字段。

最后,我所做的是建立网址并通过网址请求数据。

构建网址

 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;
 }

3 个答案:

答案 0 :(得分:7)

access_token参数前面应该有&符号& 。但是现在,在该参数之前附加了。问题是代码的一部分是在网址中附加而不是&

答案 1 :(得分:0)

通过RestFB for java,您可以使用Parameter类。

您的示例中的

Parameter.with("fields", "albums.fields(id,name,description,updated_time,created_time,cover_photo")。 (API可能会改变)

答案 2 :(得分:-1)

我遇到了同样的问题,但使用GraphRequest类,所以我会为它写。

GraphRequest会像这样制作网址

browser.executeScript("arguments[0].scrollIntoView();", basePage.techSpecContainer.getWebElement());

而不是

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

应该如此。

解决方案:

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